IT用語集 › データベース › ロックタイムアウト

ロックタイムアウト

データベース Svenska → 更新: 2026-10-22

クエリがロックを取れずに待てる最大時間。超えると中断される。デフォルトは無制限(永遠に待つ)のことが多く、本番では競合時に接続が固まるのを避けるため5〜30秒が推奨される。

PostgreSQL では SET statement_timeout = '5s'、MySQL では SET lock_wait_timeout = 5 と書く。デッドロック検出とは別物だ。デッドロックは1秒未満で検出・中断されるが、ロックタイムアウトは通常の競合のためにある。

オンラインのスキーマ変更で特に効く。ALTER TABLE は AccessExclusive ロックを必要とし、遅いクエリがロックを持っていると ALTER が待たされ、後ろのトラフィックまで全部止まる。ロックタイムアウトがあれば ALTER は止まる代わりに中断される。マイグレーションの定石は、SET lock_timeout = '2s' とリトライのループを組み合わせることだ。

← 用語集に戻る