問題背景
某天測試功能時,發現有些功能一直在loading,查看日誌後發現,涉及到
sample_express
表的所有DML語句都執行不了,然後在一段時間後拋出異常:Lock wait timeout exceeded; try restarting transaction
。
排查過程
-
首先查看
information_schema.INNODB_TRX
表,查看當前事務和狀態,是否有長時間執行或者等待鎖的事務;如果有查看其進程ID;
-
執行
kill [thx_thread_id]
命令,結束該事務進程。
相關知識
Mysql5.5中,information_schema庫中增加了三個關於鎖的表(MEMORY引擎):
- innodb_trx :當前運行的所有事務
- innodb_locks: 當前出現的鎖
- innodb_lock_waits: 鎖等待的對應關係