DBAtlas · データベース運用アトラス

1205: Lock wait timeout exceeded; try restarting transaction(ロック待機タイムアウトを超過)

MySQL

意味

トランザクションが必要な行ロックを innodb_lock_wait_timeout 秒間待ったが取得できず、タイムアウトした。

原因

別のトランザクションがコミットもロールバックもせずに長時間ロックを保持している。アイドル状態のオープントランザクション、長時間実行される一括更新、または競合するホット行。

対処方法

ブロッキングトランザクションを特定する: performance_schema.data_lock_waits と data_locks を結合する (旧バージョンでは information_schema.innodb_lock_waits/innodb_trx)。ブロッキングトランザクションをコミット/ロールバックするか、必要なら KILL <trx_mysql_thread_id> で終了させる。トランザクションを短く保ち、アイドル状態で放置しない (autocommit/アプリケーションロジック)。必要なら innodb_lock_wait_timeout をワークロードに合わせて調整する。

DBAtlas で開く →

同じデータベースの他の項目