Mysql-鎖

http://www.cnblogs.com/chenqionghe/p/4845693.html

https://tech.meituan.com/innodb-lock.html

按類型分:

共享鎖(IS):允許一個(gè)事務(wù)去讀一行载弄,阻止其他事務(wù)獲得相同數(shù)據(jù)集的排他鎖护糖。

排他鎖(IX):允許獲取排他鎖的事務(wù)更新數(shù)據(jù),阻止其他事務(wù)取得相同的數(shù)據(jù)集共享讀鎖和排他寫鎖绎速。

按粒度分:

表級(jí)鎖

行級(jí)鎖

MyISAM 不支持事務(wù)八毯,表級(jí)鎖搓侄;InnoDB 支持事務(wù),行級(jí)鎖

InnoDB行鎖實(shí)現(xiàn)方式

InnoDB行鎖是通過(guò)索引上的索引項(xiàng)來(lái)實(shí)現(xiàn)的话速,這一點(diǎn)MySQL與Oracle不同讶踪,后者是通過(guò)在數(shù)據(jù)中對(duì)相應(yīng)數(shù)據(jù)行加鎖來(lái)實(shí)現(xiàn)的。

InnoDB這種行鎖實(shí)現(xiàn)特點(diǎn)意味者:只有通過(guò)索引條件檢索數(shù)據(jù)泊交,InnoDB才會(huì)使用行級(jí)鎖乳讥,否則柱查,InnoDB將使用表鎖!

MVCC 多版本并發(fā)控制

Innodb的默認(rèn)隔離級(jí)別是:RR 可重復(fù)讀云石,就是通過(guò)MVCC來(lái)實(shí)現(xiàn)的唉工。通過(guò)MVCC實(shí)現(xiàn)了可重復(fù)讀,并且不需要加鎖汹忠。

在InnoDB中淋硝,會(huì)在每行數(shù)據(jù)后添加兩個(gè)額外的隱藏的值來(lái)實(shí)現(xiàn)MVCC,這兩個(gè)值一個(gè)記錄這行數(shù)據(jù)何時(shí)被創(chuàng)建宽菜,另外一個(gè)記錄這行數(shù)據(jù)何時(shí)過(guò)期(或者被刪除)谣膳。

在實(shí)際操作中,存儲(chǔ)的并不是時(shí)間赋焕,而是事務(wù)的版本號(hào)参歹,每開啟一個(gè)新事務(wù),事務(wù)的版本號(hào)就會(huì)遞增隆判。

Innodb的幻讀解決

Innodb的默認(rèn)隔離級(jí)別是:RR 可重復(fù)讀犬庇,但其實(shí)是已經(jīng)解決了RR級(jí)別的幻讀問(wèn)題。

行鎖防止別的事務(wù)修改或刪除侨嘀,

GAP鎖防止別的事務(wù)新增臭挽,

行鎖和GAP鎖結(jié)合形成的的Next-Key鎖共同解決了RR級(jí)別在寫數(shù)據(jù)時(shí)的幻讀問(wèn)題。

InnoDB有三種行鎖的算法:

1咬腕,Record Lock:?jiǎn)蝹€(gè)行記錄上的鎖欢峰。

2,Gap Lock:間隙鎖涨共,鎖定一個(gè)范圍纽帖,但不包括記錄本身。GAP鎖的目的举反,是為了防止同一事務(wù)的兩次當(dāng)前讀懊直,出現(xiàn)幻讀的情況。

3火鼻,Next-Key Lock:1+2室囊,鎖定一個(gè)范圍,并且鎖定記錄本身魁索。對(duì)于行的查詢融撞,都是采用該方法,主要目的是解決幻讀的問(wèn)題粗蔚。

Gap 鎖(間隙鎖):

http://blog.chinaunix.net/uid-20726500-id-5749804.html

假如user表中只有101條記錄尝偎,其userid 的值分別是1,2,…,100,101,下面的SQL:

SELECT * FROM user WHERE userid > 100 FOR UPDATE

上面是一個(gè)范圍條件的檢索鹏控,InnoDB不僅會(huì)對(duì)符合條件的userid 值為101的記錄加鎖冬念,也會(huì)對(duì)userid 大于101(這些記錄并不存在)的“間隙”加鎖

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末趁窃,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子急前,更是在濱河造成了極大的恐慌,老刑警劉巖瀑构,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件裆针,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡寺晌,警方通過(guò)查閱死者的電腦和手機(jī)世吨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)呻征,“玉大人耘婚,你說(shuō)我怎么就攤上這事÷礁常” “怎么了沐祷?”我有些...
    開封第一講書人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)攒岛。 經(jīng)常有香客問(wèn)我赖临,道長(zhǎng),這世上最難降的妖魔是什么灾锯? 我笑而不...
    開封第一講書人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任兢榨,我火速辦了婚禮,結(jié)果婚禮上顺饮,老公的妹妹穿的比我還像新娘吵聪。我一直安慰自己,他們只是感情好兼雄,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開白布吟逝。 她就那樣靜靜地躺著,像睡著了一般君旦。 火紅的嫁衣襯著肌膚如雪澎办。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,050評(píng)論 1 291
  • 那天金砍,我揣著相機(jī)與錄音局蚀,去河邊找鬼。 笑死恕稠,一個(gè)胖子當(dāng)著我的面吹牛琅绅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播鹅巍,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼千扶,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼料祠!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起澎羞,我...
    開封第一講書人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤髓绽,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后妆绞,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體顺呕,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年括饶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了株茶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡图焰,死狀恐怖启盛,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情技羔,我是刑警寧澤僵闯,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站堕阔,受9級(jí)特大地震影響棍厂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜超陆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一牺弹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧时呀,春花似錦张漂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至趴梢,卻和暖如春漠畜,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背坞靶。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工憔狞, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人彰阴。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓瘾敢,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子簇抵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

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

  • 當(dāng)一個(gè)系統(tǒng)訪問(wèn)量上來(lái)的時(shí)候庆杜,不只是數(shù)據(jù)庫(kù)性能瓶頸問(wèn)題了,數(shù)據(jù)庫(kù)數(shù)據(jù)安全也會(huì)浮現(xiàn)碟摆,這時(shí)候合理使用數(shù)據(jù)庫(kù)鎖機(jī)制就顯得異...
    初來(lái)的雨天閱讀 3,564評(píng)論 0 22
  • MySQL 加鎖處理分析 轉(zhuǎn)載2013年12月13日 16:43:55 7598 原文地址:http://hede...
    初來(lái)的雨天閱讀 445評(píng)論 0 2
  • 背景 MySQL/InnoDB的加鎖分析晃财,一直是一個(gè)比較困難的話題。我在工作過(guò)程中典蜕,經(jīng)常會(huì)有同事咨詢這方面的問(wèn)題拓劝。...
    MakeACoder閱讀 610評(píng)論 0 3
  • InnoDB 鎖 數(shù)據(jù)庫(kù)使用鎖是為了支持更好的并發(fā),提供數(shù)據(jù)的完整性和一致性嘉裤。InnoDB是一個(gè)支持行鎖的存儲(chǔ)引擎...
    大富帥閱讀 1,468評(píng)論 0 4
  • MySQL中主要有兩種鎖:行級(jí)鎖和表級(jí)鎖:行級(jí)鎖(row-level):特點(diǎn)是鎖定對(duì)象的粒度小,發(fā)生鎖定資源爭(zhēng)用的...
    田真的架構(gòu)人生閱讀 792評(píng)論 0 1