MySQL的鎖機制

一、定義

為了解決資源共享而造成的并發(fā)問題靖榕。

買最后一件衣服X:

A:對衣服X進行加鎖——試衣服蓖谢、下單捂蕴、打包——對衣服X解鎖

B:發(fā)現(xiàn)衣服X被加鎖,只能等待X解鎖闪幽,X解鎖后發(fā)現(xiàn)衣服今天售空

二啥辨、分類

按操作類型:

①讀鎖(共享鎖):對同一數(shù)據(jù),多個讀操作可以同時進行盯腌,互不干擾

②寫鎖(排它鎖):如果當(dāng)前寫操作沒有結(jié)束溉知,則無法進行其他的讀操作和寫操作

讀:select

寫:update、insert into腕够、delete

按操作范圍:

①表鎖():一次性對一張表進行整體加鎖

表類型為MyISAM , 開銷小级乍,加鎖快,無死鎖帚湘,鎖的范圍大容易造成鎖沖突玫荣,并發(fā)度低

②行鎖:一次性對一條數(shù)據(jù)進行加鎖

表類型為InnoDB,開銷大客们,加鎖慢,死鎖材诽,鎖的范圍小不會造成鎖沖突底挫,并發(fā)度高

③頁鎖

死鎖:兩個及兩個以上事務(wù)在執(zhí)行過程中,因資源爭奪而造成的相互等待的現(xiàn)象

并發(fā)度高:很小的概率出現(xiàn)高并發(fā)問題脸侥,如臟讀建邓、幻讀和不可重復(fù)讀

三、表鎖用MyISAM(讀)

會話0 : lock table 表1 read

會話0:可以讀表1睁枕;不可以寫表1官边;不可以讀、寫其他表

其他會話:可以讀表1外遇;不可以寫表1注簿;可以讀、寫其他表

四跳仿、表鎖用MyISAM(寫)

會話0:lock table 表1 write

會話0:可以讀表1诡渴;:可以寫表1;不可以讀菲语、寫其他表

其他會話:對表1進行增刪改查的前提是會話0釋放寫鎖

五妄辩、表鎖進行解鎖

unlock table 表1惑灵;

也可以通過事務(wù)來解鎖

六、分析表鎖定

show open tables? ? 1代表加鎖眼耀,0代表沒有加鎖

show status like 'table%'

①table_locks_immediate :可能獲得的鎖數(shù)

②table_locks_waited:需要等待的表鎖數(shù)(值越大英支,表示存在越大的鎖競爭)

一般建議:

當(dāng)table_locks_immediate/table_locks_waited>5000,用InnoDB哮伟,否則用MyISAM

七干花、行鎖用InnoDB(寫)

會話0:增刪改操作(同樣的數(shù)據(jù)),進行加鎖

會話1:增刪改操作(同樣的數(shù)據(jù))把敢,發(fā)現(xiàn)數(shù)據(jù)被加鎖,不能進行增刪改操作谅辣;直到會話0將該鎖釋放才能進行寫操作

行鎖通過事務(wù)commit/rollback進行解鎖


會話0:增刪改操作(不同的數(shù)據(jù))修赞,進行加鎖

會話1:增刪改操作(不同的數(shù)據(jù)),會話0不影響會話1的增刪改操作


注意事項:

①如果沒有索引桑阶,則行鎖轉(zhuǎn)為表鎖

當(dāng)索引類型轉(zhuǎn)換柏副,則索引失效行鎖轉(zhuǎn)化為表鎖

②行鎖的一種特殊情況:間隙鎖

表1中沒有id=7的數(shù)據(jù)

update 表1 set name='x' where id>1 and id<9

間隙:mysql會自動給間隙加鎖(稱為間隙鎖)

行鎖:如果有where ,則實際加鎖的范圍就是where后面的范圍蚣录,不是實際的值


InnoDB用的是行鎖

行鎖的優(yōu)點:并發(fā)能力強割择,效率高

行鎖的缺點:比表鎖性能損耗大

所以如果是高并發(fā),采用InnoDB,否則用MyISAM

八萎河、行鎖用InnoDB(讀)

怎么在查詢的時候加鎖呢荔泳?

select * from score for update(此條查詢加鎖了)

通過for update給查詢語句加鎖

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市虐杯,隨后出現(xiàn)的幾起案子玛歌,更是在濱河造成了極大的恐慌,老刑警劉巖擎椰,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件支子,死亡現(xiàn)場離奇詭異,居然都是意外死亡达舒,警方通過查閱死者的電腦和手機值朋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來巩搏,“玉大人昨登,你說我怎么就攤上這事」岬祝” “怎么了篙骡?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我糯俗,道長尿褪,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任得湘,我火速辦了婚禮杖玲,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘淘正。我一直安慰自己摆马,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布鸿吆。 她就那樣靜靜地躺著囤采,像睡著了一般。 火紅的嫁衣襯著肌膚如雪惩淳。 梳的紋絲不亂的頭發(fā)上蕉毯,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天,我揣著相機與錄音思犁,去河邊找鬼代虾。 笑死,一個胖子當(dāng)著我的面吹牛激蹲,可吹牛的內(nèi)容都是我干的棉磨。 我是一名探鬼主播,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼学辱,長吁一口氣:“原來是場噩夢啊……” “哼乘瓤!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起策泣,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤衙傀,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后着降,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體差油,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡拗军,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年任洞,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片发侵。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡交掏,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出刃鳄,到底是詐尸還是另有隱情盅弛,我是刑警寧澤,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站挪鹏,受9級特大地震影響见秽,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜讨盒,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一解取、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧返顺,春花似錦禀苦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至秉扑,卻和暖如春慧邮,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背邻储。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工赋咽, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人吨娜。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓脓匿,卻偏偏與公主長得像,于是被迫代替她去往敵國和親宦赠。 傳聞我的和親對象是個殘疾皇子陪毡,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,678評論 2 354

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

  • 鎖概述 MySQL的鎖機制,就是數(shù)據(jù)庫為了保證數(shù)據(jù)的一致性而設(shè)計的面對并發(fā)場景的一種規(guī)則勾扭。 最顯著的特點是不同的存...
    胡一巴閱讀 246評論 0 0
  • 鎖概述 MySQL的鎖機制毡琉,就是數(shù)據(jù)庫為了保證數(shù)據(jù)的一致性而設(shè)計的面對并發(fā)場景的一種規(guī)則。 最顯著的特點是不同的存...
    胡一巴閱讀 433評論 0 0
  • 概述 數(shù)據(jù)庫鎖定機制簡單來說妙色,就是數(shù)據(jù)庫為了保證數(shù)據(jù)的一致性桅滋,而使各種共享資源在被并發(fā)訪問變得有序所設(shè)計的一種規(guī)則...
    datazhen閱讀 756評論 0 2
  • 觀其大綱 第1章 MySQL體系結(jié)構(gòu)和存儲引擎第2章 InnoDB存儲引擎第3章 文件第4章 表第5章 索引與算法...
    周少言閱讀 6,908評論 0 33
  • not to be unnoticed 被忽略,未被注意 hardly, nearly 連用表示雙重否定 句式: ...
    你好Ruby閱讀 193評論 0 0