mysql之innodb的鎖分類引見。本站提示廣大學習愛好者:(mysql之innodb的鎖分類引見)文章只能為提供參考,不一定能成為您想要的結果。以下是mysql之innodb的鎖分類引見正文
1、innodb行鎖分類
record lock:記載鎖,也就是僅僅鎖著零丁的一行
gap lock:區間鎖,僅僅鎖住一個區間(留意這裡的區間都是開區間,也就是不包含界限值。
next-key lock:record lock+gap lock,所以next-key lock也就半開半閉區間,且是下界開,上界閉。 www.jb51.net
next-key 鎖定規模:(負無限年夜,最小第一記載],(記載之間],(最年夜記載,正無限年夜)
2、語句鎖定情形剖析
SELECT ... FROM ... FOR UPDATE對讀碰到的一切索引記載設置獨有的next-key鎖定。
INSERT INTO ... VALUES (...)對被拔出的行設置獨有鎖定。留意,這不是一個next-key鎖定,而且不阻攔其它用戶在已拔出行之前的間隙拔出。假如產生反復鍵毛病,對反復的索引記載設置同享鎖定。
· 在一個表上初始化之前指定的AUTO_INCREMENT列之時,InnoDB在與AUTO_INCREMENT列相干聯的索引的末尾設置獨有鎖定。在拜訪主動增加計數器中,InnoDB應用公用的表鎖定形式AUTO-INC,個中鎖定僅連續到以後SQL語句的停止,而不是到全部事務的停止。InnoDB取回先前初始化的AUTO_INCREMENT列的值而不設定任何鎖定。
INSERT INTO T SELECT ... FROM S WHERE ... 對每一個拔出到T的行設置獨有(非next-key)鎖定。它在S上把搜刮看成一個連續讀,然則假如MySQL二進制日記功效被翻開,它就對S設置一個同享的next-key鎖
定。InnoDB在後一種情形不能不設置鎖定:在從一個備份的前滾恢復中,每一個SQL語句不能不以與它最後被履行的方法完整異樣的方法履行。
· CREATE TABLE ... SELECT ... 把SELECT看成一個連續讀來履行,或許帶著同享鎖定來履行,如後面的條目所述。
· 假如獨一鍵沒有抵觸,REPLACE象一個拔出一樣被做。別的,對必需更新的行設置一個獨有的nextkey鎖定。
· UPDATE ... WHERE ... 對搜刮碰到的每一個記載設置一個獨有的next-key鎖定。
· DELETE FROM ... WHERE ... 對搜刮碰到的每一個記載設置一個獨有的next-key鎖定。
· 假如對一個表界說FOREIGN KEY束縛,任何須要檢討束縛前提的拔出,更新或刪除對它看著檢討束縛的記載設置同享行級鎖定。InnoDB在束縛掉敗的情形下也設置這些鎖定。