程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql之innodb的鎖分類引見

mysql之innodb的鎖分類引見

編輯:MySQL綜合教程

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在束縛掉敗的情形下也設置這些鎖定。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved