MySQLで長時間実行中のクエリを特定し、強制終了する方法

処理に時間がかかっているクエリを調べる

MySQLでは、SHOW PROCESSLISTステートメントを使って現在実行中のスレッドを確認できます。
このコマンドは、各スレッドのID、ユーザー名、実行中のクエリなど、重要な情報を提供します。
Infoフィールドでは、クエリの最初の100文字が表示されます。
すべてのクエリを表示するには、SHOW FULL PROCESSLISTを使用します。

mysql> show processlist;
+---------+-----------------+------------+-------+---------+---------+------------------------+----------
| Id      | User            | Host       | db    | Command | Time    | State                  | Info     
+---------+-----------------+------------+-------+---------+---------+------------------------+----------
| 5483780 | admin           | localhost  | my_db | Execute |     490 | executing              | select ...

この例では、Idが5483780のスレッドが490秒間実行中であることがわかります。
これは、パフォーマンスの問題を引き起こしている可能性があります。

処理に時間がかかっているクエリを強制終了する

長時間実行中のクエリを強制終了するには、KILL processlist_id ステートメントを使用します。
このコマンドは、指定したプロセスIDのスレッドを即座に終了させます。

Idが5483780のスレッドを終了する場合は、以下のようにします。

mysql> kill 5483780;

参考

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください