禁止死鎖檢測來提升高並發MySQL性能

 

在一個高並發的MySQL服務器上,事務會遞歸檢測死鎖,當超過一定的深度時,性能的下降會變的不可接受。FACEBOOK早就提出瞭禁止死鎖檢測。

我們做瞭一個實驗,在禁止死鎖檢測後,TPS得到瞭極大的提升,如下圖所示:

 

禁止死鎖檢測後,即使死鎖發生,也不會回滾事務,而是全部等待到超時

Patch比較簡單,直接在死鎖檢測前加一層判斷即可:

if (innobase_deadlock_check && UNIV_UNLIKELY(lock_deadlock_occurs(lock, trx))) 

。。。。

innobase_deadlock_check是在innodb裡新加的系統變量,用於控制是否打開死鎖檢測

 

摘自 記錄成長之路

發佈留言