mysql死鎖的解決發方法:1、等待,直到逾時(innodb_lock_wait_timeout=50s),自動回滾事務;2、發起死鎖偵測,主動回滾一則事務,讓其他事務繼續執行( innodb_deadlock_detect=on)。
MySQL有兩種死鎖處理方式:
● 等待,直到逾時(innodb_lock_wait_timeout=50s),自動回滾事務。
● 發起死鎖偵測,主動回滾一則事務,讓其他事務繼續執行(innodb_deadlock_detect=on)。
由於效能原因,一般都是使用死鎖偵測來進行處理死鎖。
死鎖偵測
死鎖偵測的原理是建構一個以交易為頂點、鎖為邊的有向圖,判斷有向圖是否存在環,存在即有死鎖。
回滾
偵測到死鎖之後,選擇插入更新或刪除的行數最少的交易回滾,基於 INFORMATION_SCHEMA.INNODB_TRX 表中的 trx_weight 欄位來判斷。
以上是mysql死鎖怎麼解決?的詳細內容。更多資訊請關注PHP中文網其他相關文章!