mysql 鎖

mysql鎖從大方向分為全局鎖,表級(jí)鎖和行鎖屹逛,這篇文章我們主要講行鎖础废。

首先,我們需要明確罕模,行鎖是innodb引擎特有的评腺,這也是innodb很厲害的一點(diǎn)淑掌。

行鎖的類型有四種蒿讥,記錄鎖,間隙鎖抛腕,臨建鎖芋绸,插入意向鎖

在講這四種行鎖之前,我們需要明確它們的基礎(chǔ)担敌,也就是共享鎖和排他鎖摔敛,我們把這兩種稱為鎖的模式

? ? 共享鎖(S鎖):select lock in share mode,滿足讀讀共享全封,讀寫互斥

? ? 排它鎖(X鎖):select for update ; update, insert ,delete马昙,滿足寫寫互斥、讀寫互斥

下圖是這兩種鎖模式的兼容情況

現(xiàn)在回到四種行級(jí)鎖:

1.記錄鎖(Record Lock):鎖住的是一條記錄

2.間隙鎖(Gap Lock):只存在于可重復(fù)讀隔離級(jí)別刹悴,目的是為了解決可重復(fù)讀隔離級(jí)別下幻讀的現(xiàn)象行楞,限制一個(gè)區(qū)間在間隙鎖加鎖的情況下不能插入數(shù)據(jù),如(3土匀,5)子房,那么鎖期間4就無(wú)法被插入

產(chǎn)生間隙鎖的條件(RR事務(wù)隔離級(jí)別下;):

? ? 使用普通索引鎖定恒削;

? ? 使用多列唯一索引池颈;

? ? 使用唯一索引鎖定多行記錄。

間隙鎖設(shè)置:

? 首先查看 innodb_locks_unsafe_for_binlog 是否禁用:show variables like 'innodb_locks_unsafe_for_binlog';

? 查看結(jié)果:innodb_locks_unsafe_for_binlog:默認(rèn)值為OFF钓丰,即啟用間隙鎖躯砰。

? 因?yàn)榇藚?shù)是只讀模式,如果想要禁用間隙鎖携丁,需要修改 my.cnf(windows是my.ini) 重新啟動(dòng)才行琢歇。? ??

? ?# 在 my.cnf 里面的[mysqld]添加

? ?[mysqld]

? ? innodb_locks_unsafe_for_binlog = 1

? 具體事例分析:https://zhuanlan.zhihu.com/p/48269420

3.臨建索(Next-Key Lock):目的也是為了解決幻讀兰怠,是記錄鎖和行級(jí)鎖的組合,既可以限制一個(gè)區(qū)間不能插入數(shù)據(jù)李茫,還可以限制某行記錄不能被修改揭保,如(3,5],那么4無(wú)法插入魄宏,且5這條記錄不能被修改

4.插入意向鎖:一個(gè)事務(wù)在插入一條記錄的時(shí)候秸侣,需要判斷插入位置是否已被其他事務(wù)加了間隙鎖(next-key lock 也包含間隙鎖)。如果有的話宠互,插入操作就會(huì)發(fā)生阻塞味榛,直到擁有間隙鎖的那個(gè)事務(wù)提交為止(釋放間隙鎖的時(shí)刻),在此期間會(huì)生成一個(gè)插入意向鎖予跌,表明有事務(wù)想在某個(gè)區(qū)間插入新記錄搏色,但是現(xiàn)在處于等待狀態(tài)。

參考資料:https://xiaolincoding.com/mysql/lock/mysql_lock.html#%E5%85%A8%E5%B1%80%E9%94%81

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末券册,一起剝皮案震驚了整個(gè)濱河市频轿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌烁焙,老刑警劉巖航邢,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異考阱,居然都是意外死亡翠忠,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門乞榨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)秽之,“玉大人,你說(shuō)我怎么就攤上這事吃既】颊ィ” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵鹦倚,是天一觀的道長(zhǎng)河质。 經(jīng)常有香客問(wèn)我,道長(zhǎng)震叙,這世上最難降的妖魔是什么掀鹅? 我笑而不...
    開封第一講書人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮媒楼,結(jié)果婚禮上乐尊,老公的妹妹穿的比我還像新娘。我一直安慰自己划址,他們只是感情好扔嵌,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開白布限府。 她就那樣靜靜地躺著,像睡著了一般痢缎。 火紅的嫁衣襯著肌膚如雪胁勺。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,772評(píng)論 1 290
  • 那天独旷,我揣著相機(jī)與錄音署穗,去河邊找鬼。 笑死嵌洼,一個(gè)胖子當(dāng)著我的面吹牛蛇捌,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播咱台,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼俭驮!你這毒婦竟也來(lái)了回溺?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤混萝,失蹤者是張志新(化名)和其女友劉穎遗遵,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體逸嘀,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡车要,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了崭倘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片翼岁。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖司光,靈堂內(nèi)的尸體忽然破棺而出琅坡,到底是詐尸還是另有隱情,我是刑警寧澤残家,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布榆俺,位于F島的核電站,受9級(jí)特大地震影響坞淮,放射性物質(zhì)發(fā)生泄漏茴晋。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一回窘、第九天 我趴在偏房一處隱蔽的房頂上張望诺擅。 院中可真熱鬧,春花似錦毫玖、人聲如沸掀虎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)烹玉。三九已至驰怎,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間二打,已是汗流浹背县忌。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留继效,地道東北人症杏。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像瑞信,于是被迫代替她去往敵國(guó)和親厉颤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 鎖是計(jì)算機(jī)協(xié)調(diào)多個(gè)進(jìn)程或線程并發(fā)訪問(wèn)某一資源的機(jī)制凡简。在數(shù)據(jù)庫(kù)中逼友,除傳統(tǒng)的計(jì)算資源(如CPU、RAM秤涩、I/O等)的爭(zhēng)...
    薛延祥閱讀 202評(píng)論 0 0
  • MySQL學(xué)習(xí)之——鎖(行鎖帜乞、表鎖、頁(yè)鎖筐眷、樂(lè)觀鎖黎烈、悲觀鎖等)https://crossoverjie.top/ht...
    pluss閱讀 456評(píng)論 0 6
  • 1. MySQL鎖概述 MyISAM 和 MEMORY 存儲(chǔ)引擎采用的是表級(jí)鎖(table-level locki...
    安靜點(diǎn)就睡吧閱讀 227評(píng)論 0 1
  • 前言 數(shù)據(jù)庫(kù)鎖定機(jī)制是數(shù)據(jù)庫(kù)為了保證數(shù)據(jù)的一致性而使各種共享資源在并發(fā)訪問(wèn)時(shí)變的有序的一種規(guī)則。MySQL數(shù)據(jù)庫(kù)的...
    Justlearn閱讀 1,660評(píng)論 0 4
  • 1匀谣、鎖的類型 InnoDB實(shí)現(xiàn)了如下兩種標(biāo)準(zhǔn)的行級(jí)鎖: 共享鎖(S Lock):允許事務(wù)對(duì)一條行數(shù)據(jù)進(jìn)行讀取 排他...
    文檔隨手記閱讀 1,183評(píng)論 0 16