為完善mysql基礎博文,另外開一片博文,講一講事務機制、索引和一些優化技巧。談到事務,不免需要揪出mysql中的引擎,常用的引擎有myisam和innodb,後者才具有事務機制(innodb引擎)。並且,在mysql5.7版本之後,預設引擎是innodb,通常情況下選innodb是正確的(這些概念性的東西,應聘的時候都會有所涉及,深淺略有不同)。
acid事務特性,能夠很好地保證單個事務的資料準確性。但是,如果多個事務共同操作乙個資料庫時,由於某些原因,就會產生一些問題。如髒讀、不可重複讀、幻讀等等
克服產生髒讀、幻讀等問題的方法是提高事務的隔離級別。事務隔離級別有,但是隔離級別越高,會導致鎖的範圍越大,最後造成鎖全表,降低資料庫併發處理能力
快照讀的方式
mysql如何解決幻讀問題?mysql針對快照讀,在rr隔離級別下通過mvcc(多版本控制)解決幻讀問題;針對當前讀,採用間隙鎖 + 索引鎖的方式解決幻讀問題(next-key技術)
通過間隙鎖機制,會在索引id>3後所有的資料資料上加鎖,保證資料的唯一性,解決幻讀問題
序列化(隔離級別最高,並行度最低):克服髒讀、不可重複讀、幻讀,但是並行效率低、效能差,一般不太使用
myisam引擎
如何看索引使用被使用
sql優化,不得不提一下資料是如何從倉庫中到展示介面的,具體過程如下:
如果希望sql查詢更快地返回結果,可以從兩個方面解決。一是生成更優的執行計畫(主要的優化目的),二是返回更少的資料給客服端降低資料傳輸時間(這部分主要看字段的型別設計和業務,不太可控),所以下文主要講第乙個方面的優化
分割槽表
分庫分表
目的:降低單庫單錶的儲存壓力,增加資料庫的擴充套件性和吞吐量
主從表複製
同步複製
非同步複製
半同步複製
sql語句優化
mysql索引和事務 MySql索引和事務
mysqlde 索引 目的 是為了加快查詢的速度,避免順序查詢,但是拖慢了插入和刪除的速度.應用在在經常查詢,很少少出插入的場景中.結構 b 樹,n叉搜尋樹,使用鏈式的結構把每一層的節點連線在一起,葉子節點中儲存資料,非葉子節點輔助查詢.主鍵索引和其他索引的不一樣 主鍵索引葉子節點儲存一條一條的資料...
Mysql索引 事務隔離級別和優化
1.mysql多索引最左字首原則 從前往後依次使用生效,如果中間某個索引沒有使用,那麼斷點前面的索引部分起作用,斷點後面的索引沒有起作用 select from table where index1 and index2 and index3 這種三個索引順序使用中間沒有斷點,全部發揮作用 sele...
mysql事務索引 mysql事務索引和許可權管理
pysql sql注入 太相信使用者輸入的所有的資料。解決方法 1.自己手動去判斷轉義使用者輸入的資料2.不要拼接sql語句,使用pymysql 的execute方法,防止sql的注入。事務 一組操作,要麼都成功要麼都失敗 四大特性 1.原子性 原子是最小的粒度,所以說一組操作要麼都 成功要麼都失敗...