402 文字
2 分
MySQLで実行中のSELECT文を中断する
実行中のSELECT文を出力する
MySQLで実行中のSELECT文の一覧を出すことができます。主に以下の2つの方法があります:
-
SHOW PROCESSLIST
コマンドを使用する方法:SHOW [FULL] PROCESSLIST;このコマンドは現在実行中のすべてのクエリ(SELECT文を含む)を表示します。FULLキーワードを使用すると、INFO列にクエリの全文が表示されます。
-
INFORMATION_SCHEMA.PROCESSLIST
テーブルを使用する方法:SELECT * FROM INFORMATION_SCHEMA.PROCESSLISTWHERE COMMAND = 'Query'AND INFO LIKE 'SELECT%';このクエリは実行中のSELECT文のみを抽出します。
これらの方法を使用することで、現在実行中のSELECT文の一覧を確認できます。また、必要に応じて条件を追加して、特定のユーザーやデータベースに関連するクエリのみを表示することも可能です。
実行中のクエリをキルする
実行中のクエリをキルするには、以下の手順を行います:
- KILLコマンドを使用してクエリを終了する:
KILL <プロセスID>;
複数のクエリを一括でキルする場合は、以下の方法が使えます:
-
長時間実行中のクエリのIDを取得:
SELECT GROUP_CONCAT(ID) FROM INFORMATION_SCHEMA.PROCESSLIST WHERE TIME > 59; -
mysqladminコマンドを使用して複数のクエリを一括キル:
mysqladmin kill ID1,ID2,ID3 -h localhost -u ユーザー名
注意点:
- クエリをキルする前に、そのクエリの重要性を確認してください。
- KILL CONNECTIONを使用すると接続も終了しますが、KILL QUERYはクエリのみを終了します。
- Amazon RDS for MySQLを使用している場合は、mysql.rds_kill_queryストアドプロシージャを使用できます。