Deadlock Wait Timeout Exceeded on MySQL

遇到 MySQL 的「deadlock wait timeout exceeded」,可以參考「Lock wait timeout exceeded; try restarting transaction」的說明。

尚未找到造成此問題的 query,暫時的解決辦法是:

  • 暫時先將 innodb_lock_wait_timeout 的值調大 (注意:不是 wait_timeout 這個參數)
  • 記錄導致 transaction 花掉太多時間的 query
    • long_query_time = 10
    • log_queries_not_using_indexes 記錄沒有使用到 index 的 query (這類 query 可能導致 table scan 而花掉超多的時間)

在蒐集 log 的期間,可以先去看一下 table schema,看看是不是有哪一些 column 或 combined index 怪怪的,跑 EXPLAIN 確定一下 index 是不是真的有用到

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Exit mobile version