ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction —— 當前事務等待行鎖超過 innodb_lock_wait_timeout(默認 50 秒)。
SHOW ENGINE INNODB STATUS\G
-- 關注 TRANSACTIONS 區塊:等待鎖的事務、持有鎖的事務、鎖模式、索引名
LOCK_TYPE=RECORD, LOCK_MODE=X, LOCK_DATA=supremum pseudo-record)。SET GLOBAL innodb_lock_wait_timeout = 120;(臨時緩解,治標不治本)。Deadlock found when trying to get lock; try restarting transaction)。innodb_deadlock_detect = ON(默認),不可關閉。LOCK TABLES、MyISAM、MDL)不在檢測範圍,需靠超時機制。[ndbd default]
TransactionDeadLockDetectionTimeOut = 10000 # 10s,默認 1.2s
Innodb_row_lock_waits、Innodb_row_lock_time_avg 趨勢。Lock_time,定期分析 Top 等待 SQL。innodb_lock_wait_timeout 避免誤傷長事務。