InnoDB鎖介紹.md

InnoDB鎖可以劃分為行鎖和表鎖

官方文檔:https://dev.mysql.com/doc/refman/5.7/en/innodb-locking.html

行鎖有以下的幾種:

  • 共享鎖與排他鎖(Shared and Exclusive Lock)
  • 記錄鎖(Record Lock)
  • 間隙鎖(Gap Lock)
  • 記錄鎖與間隙鎖的組合(Next-Key Lock)
  • 插入意向鎖(Insert Intention Lock)

表鎖有以下幾種:

  • 意向鎖(Intention Lock)
  • 自增鎖(AUTO-INC Lock)

行鎖

1.共享鎖【S】和排它鎖【X】

  • 普通查詢不會添加任何鎖
  • 當讀取一行記錄時萨驶,為了防止別人修改,則需要添加S鎖萍聊。
  • 當修改記錄時,為了防止別人同時進行修改迷帜,則需要添加X鎖适秩。
# 手動添加S鎖
SELECT ... LOCK IN SHARE MODE   # 8.0前
SELECT… FOR SHARE # 8.0
# 手動添加X鎖
SELECT… FOR UPDATE

2.記錄鎖(Record Lock)

在MySQL中記錄鎖都是添加在索引上的,即使表中沒有索引乱投,也會在默認創(chuàng)建的聚集索引上添加記錄鎖送爸。

3.間隙鎖(Gap Lock)

間隙鎖的鎖定范圍是索引記錄之間的間隙唧躲,或者第一條或最后一條索引記錄之前的間隙,間隙鎖是針對事務(wù)隔離級別為RR或以上級別的碱璃。

4.記錄鎖與間隙鎖的組合【Next-Key Lock】

Next-Key Lock 是索引記錄本身加上之前的間隙。間隙鎖保證在REPEATABLE-READ級別下不會出現(xiàn)幻讀現(xiàn)象饭入,防止在同一個事務(wù)內(nèi)得到的結(jié)果不一致嵌器。

5.插入意向鎖(Insert Intention Lock)

插入意向鎖是針對INSERT操作設(shè)置的一種特殊的間隙鎖,主要是為了優(yōu)化INSERT操作的并發(fā)能力谐丢。這個鎖表示插入的意圖爽航,即插入具有相同索引間隙的多個事務(wù),如果插入的值不同乾忱,則不需要互相等待讥珍。插入意向鎖之間是不沖突的,但是插入意向鎖可能和其他鎖是沖突的窄瘟,比如Next-Key Lock衷佃。

表鎖

1.意向鎖(Intention Lock)

意向鎖在MySQL中是表級別鎖,表示將來要對表添加什么類型的鎖(IX/IS)蹄葱。

  • SELECT… FOR SHARE氏义,添加意向共享鎖(IS)
  • SELECT … FOR UPDATE锄列,添加意向排他鎖(IX)
    在獲取表中某行的共享鎖之前,首先必須獲取表的IS鎖惯悠。在獲取表中某行的獨占鎖之前邻邮,首先必須獲取表的IX鎖。

2.自增鎖(AUTO-INC Lock)

自增鎖是插入到具有AUTO_INCREMENT字段的表中的事務(wù)所采用的特殊表級鎖克婶。innodb_autoinc_lock_mode參數(shù)用于控制自增鎖的算法筒严。

鎖含義

使用show engine innodb語句查看鎖信息時,會看到LOCK_MODE字段

  • IX:代表意向排他鎖情萤。
  • X:代表Next-Key Lock鎖定記錄本身和記錄之前的間隙(X)鸭蛙。
  • S:代表Next-Key Lock鎖定記錄本身和記錄之前的間隙(S)。
  • X, REC_NOT_GAP:代表只鎖定記錄本身(X)紫岩。
  • S, REC_NOT_GAP:代表只鎖定記錄本身(S)规惰。
  • X, GAP:代表間隙鎖,不鎖定記錄本身(X)泉蝌。
  • S, GAP:代表間隙鎖歇万,不鎖定記錄本身(S)。
  • X, GAP,INSERT_INTENTION:代表插入意向鎖勋陪。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末贪磺,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子诅愚,更是在濱河造成了極大的恐慌寒锚,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件违孝,死亡現(xiàn)場離奇詭異刹前,居然都是意外死亡,警方通過查閱死者的電腦和手機雌桑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門喇喉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人校坑,你說我怎么就攤上這事拣技。” “怎么了耍目?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵膏斤,是天一觀的道長。 經(jīng)常有香客問我邪驮,道長莫辨,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮衔掸,結(jié)果婚禮上烫幕,老公的妹妹穿的比我還像新娘。我一直安慰自己敞映,他們只是感情好较曼,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著振愿,像睡著了一般捷犹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上冕末,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天萍歉,我揣著相機與錄音,去河邊找鬼档桃。 笑死枪孩,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的藻肄。 我是一名探鬼主播蔑舞,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼嘹屯!你這毒婦竟也來了攻询?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤州弟,失蹤者是張志新(化名)和其女友劉穎钧栖,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體婆翔,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡拯杠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了啃奴。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片阴挣。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖纺腊,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情茎芭,我是刑警寧澤揖膜,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站梅桩,受9級特大地震影響壹粟,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一趁仙、第九天 我趴在偏房一處隱蔽的房頂上張望洪添。 院中可真熱鬧,春花似錦雀费、人聲如沸干奢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽忿峻。三九已至,卻和暖如春辕羽,著一層夾襖步出監(jiān)牢的瞬間逛尚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工刁愿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留绰寞,地道東北人。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓铣口,卻偏偏與公主長得像滤钱,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子枷踏,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355