亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

mysql死鎖后,究竟是等待超時,還是直接報錯回滾,或者在不同情況下不同表現?

mysql死鎖后,究竟是等待超時,還是直接報錯回滾,或者在不同情況下不同表現?

三國紛爭 2019-03-02 18:14:10
我看到有些文章說,針對死鎖問題,要設置合理的死鎖超時時間。但是有的又說InnoDB將自動檢測事務死鎖,并立刻回滾,返回錯誤。我試了一下,發現是“InnoDB將自動檢測事務死鎖,并立刻回滾,返回錯誤?!备蠈嶒灲Y果。所以mysql死鎖后,究竟是等待超時,還是直接報錯回滾,或者在不同情況下不同表現?如果“InnoDB將自動檢測事務死鎖,并立刻回滾,返回錯誤?!?是正確狀況,那很多文章說的”死鎖等待超時時間”是個什么概念?
查看完整描述

2 回答

?
四季花海

TA貢獻1811條經驗 獲得超5個贊

死鎖超時時間應該指的是鎖等待時間,參數為innodb_lock_wait_timeout

這兩個處理方法對應的是不同的情況

死鎖檢測: 默認開啟,InnoDB 在加鎖的時候會檢測加鎖后是否會造成死鎖,如果會就回滾代價最小的那一個事務

鎖等待超時時間: 一是為了處理檢測不出來的那種死鎖,二是避免等待正常鎖(非死鎖,可能是大事務)時間過長


查看完整回答
反對 回復 2019-03-02
?
慕后森

TA貢獻1802條經驗 獲得超5個贊

我認為死鎖并不是能夠百分百檢查出來的一種問題,所以能夠檢查出來的死鎖肯定是立即報錯了,傻乎乎等著超時不是很傻嗎?

那如果是不能檢查出來的死鎖,設置超時機制就是有必要的了。


查看完整回答
反對 回復 2019-03-02
  • 2 回答
  • 0 關注
  • 1217 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號