MySQL事務死鎖排查: Lock wait timeout exceeded; try restarting transaction

問題背景

某天測試功能時,發現有些功能一直在loading,查看日誌後發現,涉及到sample_express表的所有DML語句都執行不了,然後在一段時間後拋出異常:Lock wait timeout exceeded; try restarting transaction

排查過程

  1. 首先查看information_schema.INNODB_TRX表,查看當前事務和狀態,是否有長時間執行或者等待鎖的事務;如果有查看其進程ID;
    在這裏插入圖片描述

  2. 執行kill [thx_thread_id]命令,結束該事務進程。

相關知識

Mysql5.5中,information_schema庫中增加了三個關於鎖的表(MEMORY引擎):

  • innodb_trx :當前運行的所有事務
  • innodb_locks: 當前出現的鎖
  • innodb_lock_waits: 鎖等待的對應關係
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章