MySQLワークベンチを介して実行される読み取り専用クエリがユーザーのUIの観点からタイムアウトになり、停止が発生するまでサーバー上で実行され続けた(そしてますます多くのリソースを消費している)という問題が発生しました。
ご質問
タイムアウトに設定されているデフォルト値を確認する必要があります。
mysql> show variables like '%timeout';
+----------------------------+-------+
| Variable_name | Value |
+----------------------------+-------+
| connect_timeout | 10 |
| delayed_insert_timeout | 300 |
| innodb_lock_wait_timeout | 50 |
| innodb_rollback_on_timeout | OFF |
| interactive_timeout | 60 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| slave_net_timeout | 3600 |
| table_lock_wait_timeout | 50 |
| wait_timeout | 60 |
+----------------------------+-------+
10 rows in set (0.00 sec)
通常、私はいくつかのタイムアウト変数を監視します。 MySQLをMySQL Workbench、mysqlクライアント、またはPHP app上のアプリケーションサーバー上のアプリケーションから、DBサーバー上のMySQLにリモートで接続して使用する場合、これは非常に不可欠です。
MySQLドキュメンテーションはこれらの設定の1つを以下に示しています。
これらのタイムアウトが非常に長い時間実行される可能性のあるクエリに対応するのに十分な高さに設定されていることを確認してください。
UPDATEs
DELETEs
ENABLE KEYS
大規模なMyISAM触れなくなった後も実行を続けるクエリに対処するには、 [〜#〜] kill [〜#〜] を実行する必要があります長時間実行クエリのプロセスID。 KILLコマンドを使用した場合でも、ディスクを集中的に使用するステップの途中であるクエリや、内部mutexが進行中のクエリを待つ必要があります。