MySQL 面試系列:MySQL 中鎖的面試題總結(jié)

其它MySQL 面試系列:

MySQL 面試系列:MySQL查詢?nèi)绾芜M(jìn)行優(yōu)化?

MySQL 面試系列:一條select語句在MySQL是這樣執(zhí)行的?
MySQL 面試系列:MySQL 常見的開放性問題
MySQL 面試系列:MySQL 性能優(yōu)化 & 分布式

MySQL 面試系列:MySQL 命令和內(nèi)置函數(shù)
MySQL 面試系列:MySQL 中日志的面試題總結(jié)
MySQL 面試系列:MySQL 中鎖的面試題總結(jié)

MySQL 面試系列:MySQL 事務(wù)的面試題總結(jié)
MySQL 面試系列:MySQL 索引的面試題總結(jié)
MySQL 面試系列:MySQL 基礎(chǔ)模塊的面試題總結(jié)


什么是鎖?MySQL 中提供了幾類鎖?

鎖是實(shí)現(xiàn)數(shù)據(jù)庫并發(fā)控制的重要手段纸厉,可以保證數(shù)據(jù)庫在多人同時(shí)操作時(shí)能夠正常運(yùn)行莽囤。MySQL 提供了全局鎖、行級鎖房官、表級鎖趾徽。其中 InnoDB 支持表級鎖和行級鎖,MyISAM 只支持表級鎖翰守。

什么是死鎖孵奶?

是指兩個或兩個以上的進(jìn)程在執(zhí)行過程中,因爭奪資源而造成的一種互相等待的現(xiàn)象,若無外力作用,它們都將無法推進(jìn)下去蜡峰。此時(shí)稱系統(tǒng)處于死鎖狀態(tài)或系統(tǒng)產(chǎn)生了死鎖了袁,這些永遠(yuǎn)在互相等待的過程稱為死鎖。

死鎖是指兩個或兩個以上的進(jìn)程在執(zhí)行過程中湿颅,因爭奪資源而造成的一種互相等待的現(xiàn)象,若無外力作用,它們都將無法推進(jìn)下去载绿。此時(shí)稱系統(tǒng)處于死鎖狀態(tài)或系統(tǒng)產(chǎn)生了死鎖,這些永遠(yuǎn)在互相等待的過程稱為死鎖油航。

常見的死鎖案例有哪些崭庸?

將投資的錢拆封幾份借給借款人,這時(shí)處理業(yè)務(wù)邏輯就要把若干個借款人一起鎖住 select * from xxx where id in (xx,xx,xx) for update。
批量入庫冀自,存在則更新揉稚,不存在則插入。解決方法 insert into tab(xx,xx) on duplicate key update xx='xx'熬粗。

如何處理死鎖搀玖?

對待死鎖常見的兩種策略:

通過 innodblockwait_timeout 來設(shè)置超時(shí)時(shí)間,一直等待直到超時(shí)驻呐;
發(fā)起死鎖檢測灌诅,發(fā)現(xiàn)死鎖之后,主動回滾死鎖中的某一個事務(wù)含末,讓其它事務(wù)繼續(xù)執(zhí)行猜拾。

如何查看死鎖?

使用命令 show engine innodb status 查看最近的一次死鎖佣盒。
InnoDB Lock Monitor 打開鎖監(jiān)控挎袜,每 15s 輸出一次日志。使用完畢后建議關(guān)閉肥惭,否則會影響數(shù)據(jù)庫性能盯仪。

如何避免死鎖?

為了在單個 InnoDB 表上執(zhí)行多個并發(fā)寫入操作時(shí)避免死鎖蜜葱,可以在事務(wù)開始時(shí)通過為預(yù)期要修改的每個元祖(行)使用 SELECT … FOR UPDATE 語句來獲取必要的鎖全景,即使這些行的更改語句是在之后才執(zhí)行的。
在事務(wù)中牵囤,如果要更新記錄爸黄,應(yīng)該直接申請足夠級別的鎖,即排他鎖揭鳞,而不應(yīng)先申請共享鎖炕贵、更新時(shí)再申請排他鎖,因?yàn)檫@時(shí)候當(dāng)用戶再申請排他鎖時(shí)汹桦,其他事務(wù)可能又已經(jīng)獲得了相同記錄的共享鎖鲁驶,從而造成鎖沖突,甚至死鎖
如果事務(wù)需要修改或鎖定多個表舞骆,則應(yīng)在每個事務(wù)中以相同的順序使用加鎖語句钥弯。在應(yīng)用中,如果不同的程序會并發(fā)存取多個表督禽,應(yīng)盡量約定以相同的順序來訪問表脆霎,這樣可以大大降低產(chǎn)生死鎖的機(jī)會通過 SELECT … LOCK IN SHARE MODE 獲取行的讀鎖后,如果當(dāng)前事務(wù)再需要對該記錄進(jìn)行更新操作狈惫,則很有可能造成死鎖睛蛛。
改變事務(wù)隔離級別鹦马。
InnoDB 默認(rèn)是如何對待死鎖的?
InnoDB 默認(rèn)是使用設(shè)置死鎖時(shí)間來讓死鎖超時(shí)的策略忆肾,默認(rèn) innodblockwait_timeout 設(shè)置的時(shí)長是 50s荸频。

如何開啟死鎖檢測?

設(shè)置 innodbdeadlockdetect 設(shè)置為 on 可以主動檢測死鎖客冈,在 Innodb 中這個值默認(rèn)就是 on 開啟的狀態(tài)旭从。

什么是全局鎖?它的應(yīng)用場景有哪些场仲?
全局鎖就是對整個數(shù)據(jù)庫實(shí)例加鎖和悦,它的典型使用場景就是做全庫邏輯備份。 這個命令可以使整個庫處于只讀狀態(tài)渠缕。使用該命令之后陌凳,數(shù)據(jù)更新語句粘驰、數(shù)據(jù)定義語句、更新類事務(wù)的提交語句等操作都會被阻塞谅猾。

什么是共享鎖夜只?

共享鎖又稱讀鎖 (read lock)艺栈,是讀取操作創(chuàng)建的鎖捎泻。其他用戶可以并發(fā)讀取數(shù)據(jù)诬乞,但任何事務(wù)都不能對數(shù)據(jù)進(jìn)行修改(獲取數(shù)據(jù)上的排他鎖),直到已釋放所有共享鎖谁不。當(dāng)如果事務(wù)對讀鎖進(jìn)行修改操作,很可能會造成死鎖徽诲。

什么是排它鎖刹帕?

排他鎖 exclusive lock(也叫 writer lock)又稱寫鎖。

若某個事物對某一行加上了排他鎖谎替,只能這個事務(wù)對其進(jìn)行讀寫偷溺,在此事務(wù)結(jié)束之前,其他事務(wù)不能對其進(jìn)行加任何鎖钱贯,其他進(jìn)程可以讀取,不能進(jìn)行寫操作挫掏,需等待其釋放。

排它鎖是悲觀鎖的一種實(shí)現(xiàn)秩命,在上面悲觀鎖也介紹過尉共。

還有 52% 的精彩內(nèi)容
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
支付 ¥3.99 繼續(xù)閱讀
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市弃锐,隨后出現(xiàn)的幾起案子袄友,更是在濱河造成了極大的恐慌,老刑警劉巖霹菊,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件剧蚣,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)鸠按,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進(jìn)店門礼搁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人目尖,你說我怎么就攤上這事馒吴。” “怎么了卑雁?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵募书,是天一觀的道長。 經(jīng)常有香客問我测蹲,道長莹捡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任扣甲,我火速辦了婚禮篮赢,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘琉挖。我一直安慰自己启泣,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布示辈。 她就那樣靜靜地躺著寥茫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪矾麻。 梳的紋絲不亂的頭發(fā)上纱耻,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天,我揣著相機(jī)與錄音险耀,去河邊找鬼弄喘。 笑死,一個胖子當(dāng)著我的面吹牛甩牺,可吹牛的內(nèi)容都是我干的蘑志。 我是一名探鬼主播,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼贬派,長吁一口氣:“原來是場噩夢啊……” “哼急但!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起赠群,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤羊始,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后查描,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體突委,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡柏卤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了匀油。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缘缚。...
    茶點(diǎn)故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖敌蚜,靈堂內(nèi)的尸體忽然破棺而出桥滨,到底是詐尸還是另有隱情,我是刑警寧澤弛车,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布齐媒,位于F島的核電站,受9級特大地震影響纷跛,放射性物質(zhì)發(fā)生泄漏喻括。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一贫奠、第九天 我趴在偏房一處隱蔽的房頂上張望唬血。 院中可真熱鬧,春花似錦唤崭、人聲如沸拷恨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽腕侄。三九已至,卻和暖如春芦疏,著一層夾襖步出監(jiān)牢的瞬間兜挨,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工眯分, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人柒桑。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓弊决,卻偏偏與公主長得像,于是被迫代替她去往敵國和親魁淳。 傳聞我的和親對象是個殘疾皇子飘诗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評論 2 353

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

  • 來自公眾號JavaKeeper作者:派大新 ?寫在之前:不建議那種上來就是各種面試題羅列昆稿,然后背書式的去記憶,對技...
    夜空_2cd3閱讀 15,369評論 5 139
  • 久違的晴天息拜,家長會溉潭。 家長大會開好到教室時(shí)净响,離放學(xué)已經(jīng)沒多少時(shí)間了。班主任說已經(jīng)安排了三個家長分享經(jīng)驗(yàn)喳瓣。 放學(xué)鈴聲...
    飄雪兒5閱讀 7,520評論 16 22
  • 今天感恩節(jié)哎馋贤,感謝一直在我身邊的親朋好友。感恩相遇畏陕!感恩不離不棄配乓。 中午開了第一次的黨會,身份的轉(zhuǎn)變要...
    迷月閃星情閱讀 10,562評論 0 11
  • 可愛進(jìn)取惠毁,孤獨(dú)成精犹芹。努力飛翔,天堂翱翔鞠绰。戰(zhàn)爭美好腰埂,孤獨(dú)進(jìn)取。膽大飛翔洞豁,成就輝煌盐固。努力進(jìn)取,遙望丈挟,和諧家園刁卜。可愛游走...
    趙原野閱讀 2,726評論 1 1
  • 在妖界我有個名頭叫胡百曉曙咽,無論是何事蛔趴,只要找到胡百曉即可有解決的辦法。因?yàn)槭侵缓偞蠹乙杂瀭饔灲形摇皟A城百曉”例朱,...
    貓九0110閱讀 3,260評論 7 3