MySQL的并發(fā)控制

當(dāng)有多個(gè)查詢?cè)谕粫r(shí)刻修改同一數(shù)據(jù)時(shí)胁勺,便會(huì)產(chǎn)生并發(fā)問(wèn)題檐晕。MySQL通過(guò)鎖來(lái)進(jìn)行并發(fā)控制仇箱。

讀寫鎖

讀鎖又稱共享鎖(S鎖),讀鎖互不干擾惨缆,多個(gè)客戶在同一時(shí)刻可以同時(shí)讀取同一個(gè)資源糜值。

寫鎖又稱排他鎖(X鎖),寫鎖則是排他的坯墨,寫鎖會(huì)阻塞其他寫鎖和讀鎖寂汇,以確保在給定時(shí)間里,只有一個(gè)用戶執(zhí)行寫入捣染,并防止其他用戶讀取正在寫入的同一資源骄瓣。

鎖粒度

鎖粒度指的是鎖定的數(shù)據(jù)量的多少。在給定的資源中液斜,鎖定的數(shù)據(jù)量越少累贤,系統(tǒng)的并發(fā)程度越高叠穆,只要互相不發(fā)生沖突即可少漆。

但是鎖的操作也是需要消耗資源的,所謂的錯(cuò)策略硼被,就是在鎖的開銷和數(shù)據(jù)的安全性之間尋求平衡示损,這種平衡也會(huì)影響性能。

MySQL比較重要的鎖策略有表鎖跟行鎖嚷硫。

表鎖

表鎖是MySQL中最基本的所策略检访,并且是開銷最小的策略。它會(huì)鎖住整張表仔掸。

可以用以下語(yǔ)句獲取表鎖:

LOCK TABLES
    tbl_name [[AS] alias] lock_type
    [, tbl_name [[AS] alias] lock_type] ...

lock_type: {
    READ [LOCAL]
  | [LOW_PRIORITY] WRITE
}

UNLOCK TABLES

當(dāng)一個(gè)用戶對(duì)表進(jìn)行寫操作(插入脆贵、刪除、更新等)前起暮,先獲取該表的寫鎖卖氨,這會(huì)阻塞其他用戶對(duì)該表的所有讀寫操作。只有沒有寫鎖時(shí)负懦,其他用戶才能獲取讀鎖筒捺,讀鎖之間不相互阻塞。寫鎖比讀鎖擁有更高的優(yōu)先級(jí)纸厉,因此一個(gè)寫請(qǐng)求可能會(huì)被插入到讀鎖的前面(寫鎖可以插入到鎖隊(duì)列中讀鎖的前面系吭,讀鎖則不能插入到寫鎖的前面)。

READ [LOCAL] 鎖:

  • 持有鎖的session可以讀取表颗品,但是不能寫入肯尺。
  • 多個(gè)session可以同時(shí)獲取同一個(gè)表的讀鎖沃缘。
  • 其他session可以在不顯式獲取讀鎖的情況下讀表。
  • 使用LOCAL可以支持某些類型的并發(fā)寫操作蟆盹。在session持有讀鎖的情況下孩灯,允許其他session執(zhí)行不沖突的insert語(yǔ)句(并發(fā)插入),但是逾滥,READ LOCAL如果要在持有鎖的同時(shí)使用服務(wù)器外部的進(jìn)程來(lái)操作數(shù)據(jù)庫(kù)峰档, 則不能使用它。對(duì)于InnoDB 表寨昙,READ LOCAL跟READ一樣讥巡。

[LOW_PRIORITY] WRITE 鎖:

  • 持有鎖的session可以讀寫表。
  • 只有持有鎖的會(huì)話才能訪問(wèn)該表舔哪。在釋放鎖之前欢顷,沒有其他會(huì)話可以訪問(wèn)它。
  • 只有一個(gè)session可以獲得表的寫鎖捉蚤,其他session的寫鎖請(qǐng)求會(huì)被阻塞抬驴。
  • 該LOW_PRIORITY修飾符無(wú)效。

具體請(qǐng)看:https://dev.mysql.com/doc/refman/5.7/en/lock-tables.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末缆巧,一起剝皮案震驚了整個(gè)濱河市布持,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌陕悬,老刑警劉巖题暖,帶你破解...
    沈念sama閱讀 216,692評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異捉超,居然都是意外死亡胧卤,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門拼岳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)枝誊,“玉大人,你說(shuō)我怎么就攤上這事惜纸∫度觯” “怎么了?”我有些...
    開封第一講書人閱讀 162,995評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵堪簿,是天一觀的道長(zhǎng)痊乾。 經(jīng)常有香客問(wèn)我,道長(zhǎng)椭更,這世上最難降的妖魔是什么哪审? 我笑而不...
    開封第一講書人閱讀 58,223評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮虑瀑,結(jié)果婚禮上湿滓,老公的妹妹穿的比我還像新娘滴须。我一直安慰自己,他們只是感情好叽奥,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,245評(píng)論 6 388
  • 文/花漫 我一把揭開白布扔水。 她就那樣靜靜地躺著,像睡著了一般朝氓。 火紅的嫁衣襯著肌膚如雪魔市。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,208評(píng)論 1 299
  • 那天赵哲,我揣著相機(jī)與錄音待德,去河邊找鬼。 笑死枫夺,一個(gè)胖子當(dāng)著我的面吹牛将宪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播橡庞,決...
    沈念sama閱讀 40,091評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼较坛,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了扒最?” 一聲冷哼從身側(cè)響起丑勤,我...
    開封第一講書人閱讀 38,929評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎扼倘,沒想到半個(gè)月后确封,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體除呵,經(jīng)...
    沈念sama閱讀 45,346評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,570評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了根盒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缸血。...
    茶點(diǎn)故事閱讀 39,739評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖泛豪,靈堂內(nèi)的尸體忽然破棺而出稠诲,到底是詐尸還是另有隱情,我是刑警寧澤诡曙,帶...
    沈念sama閱讀 35,437評(píng)論 5 344
  • 正文 年R本政府宣布臀叙,位于F島的核電站,受9級(jí)特大地震影響价卤,放射性物質(zhì)發(fā)生泄漏劝萤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,037評(píng)論 3 326
  • 文/蒙蒙 一慎璧、第九天 我趴在偏房一處隱蔽的房頂上張望床嫌。 院中可真熱鬧跨释,春花似錦、人聲如沸厌处。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)阔涉。三九已至缆娃,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間瑰排,已是汗流浹背龄恋。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留凶伙,地道東北人郭毕。 一個(gè)月前我還...
    沈念sama閱讀 47,760評(píng)論 2 369
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像函荣,于是被迫代替她去往敵國(guó)和親显押。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,647評(píng)論 2 354

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

  • 一傻挂、事務(wù) 1乘碑、事務(wù)四要素:ACID 對(duì)于事務(wù),我之前的理解是很粗糙的金拒,不就是為了保證操作的原子性么兽肤?一般訂單系統(tǒng)或...
    張偉科閱讀 1,304評(píng)論 0 5
  • 為了充分發(fā)揮MySQL的性能并順利地使用,就必須理解其設(shè)計(jì)绪抛。MySQL的靈活性體現(xiàn)在很多方面资铡。例如,你可以通過(guò)配置...
    李文文丶閱讀 1,170評(píng)論 0 4
  • 我們都知道事務(wù)的幾種性質(zhì)幢码,數(shù)據(jù)庫(kù)為了維護(hù)這些性質(zhì)笤休,尤其是一致性和隔離性,一般使用加鎖這種方式症副。同時(shí)數(shù)據(jù)庫(kù)又是個(gè)高并...
    CodeKing2017閱讀 616評(píng)論 0 7
  • 1店雅、好多請(qǐng)求都到來(lái),怎么辦贞铣? 串行執(zhí)行:?jiǎn)毋y行窗口闹啦,一個(gè)一個(gè)來(lái) 交叉并發(fā)執(zhí)行:仍然是單銀行窗口,但是外面的請(qǐng)求可以...
    鐘小胖子閱讀 121評(píng)論 0 0
  • 我有時(shí)候想要變成一個(gè)男生 因?yàn)橛X得女生有一點(diǎn)恐怖 從初高中的時(shí)候 因?yàn)槭俏目瓢?男女比例1:3 女生多呢 相處之間...
    第七七閱讀 226評(píng)論 0 0