現在のロックタイムアウト時間を調べるには:

SHOW GLOBAL VARIABLES LIKE 'innodb_lock_wait_timeout';

下記のような出力になる:

+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| innodb_lock_wait_timeout | 50    |
+--------------------------+-------+

つまり、グローバル設定上はinnodb_lock_wait_timeoutが50秒ってこと。

注意:lock_wait_timeoutという設定でもあるが、そっちはmetadata lockに使用されています。innodb_lock_wait_timeoutが正しいです。

処理時タイムアウトを個別に変えたい時にSET <設定変数名> = <値>;を書けば良い:

START TRANSACTION;
SET innodb_lock_wait_timeout = 3; # タイムアウト(秒)、このトランザクションは3秒しかLockを待たない

<処理>

COMMIT;

上記のクエリー発行しても、グローバルの設定は変えられることがない。

DEAD LOCKが発生しやすい処理はinnodb_lock_wait_timeoutを適切に下げると、データベースへの負荷ある程度下げることができる

(そもそもDEAD LOCK頻発ならコードデザインの見直しをすべき)