1. 程式人生 > 其它 >資料庫死鎖如何解決

資料庫死鎖如何解決

死鎖指的是多個事務在同一資源上相互佔用並請求鎖定對方佔用的資源而導致惡性迴圈的現象。當多個事務試圖以不同順序鎖定資源時可能就會產生死鎖,多個事務同時鎖定同一個資源也會產生死鎖。

  • 為了解決死鎖問題,資料庫系統實現了死鎖檢測和死鎖超時機制。
  • 越複雜的系統,例如InnoDB儲存引擎,越能檢測到死鎖的迴圈依賴,並立即返回一個錯誤。這種解決方式很有效,否則死鎖會導致出現非常慢的查詢。
  • 還有一種解決方法,就是當查詢的時間達到鎖等待超時的設定後放棄鎖請求,這種方式通常來說不太好。

innoDB目前處理死鎖的方法是將持有最少行級排他鎖的事務進行回滾。

死鎖發生後,只有部分或者完全回滾其中一個事務,才能打破死鎖。對於事務型系統這是無法避免的,所以應用程式設計時必須考慮如何處理死鎖。大多數情況下只需要重新執行因死鎖回滾的事務即可。

歡迎批評指正,提出問題,謝謝!