402 文字
2 分
MySQLで実行中のSELECT文を中断する

実行中のSELECT文を出力する#

MySQLで実行中のSELECT文の一覧を出すことができます。主に以下の2つの方法があります:

  1. SHOW PROCESSLISTコマンドを使用する方法:

    SHOW [FULL] PROCESSLIST;

    このコマンドは現在実行中のすべてのクエリ(SELECT文を含む)を表示します。FULLキーワードを使用すると、INFO列にクエリの全文が表示されます。

  2. INFORMATION_SCHEMA.PROCESSLISTテーブルを使用する方法:

    SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST
    WHERE COMMAND = 'Query'
    AND INFO LIKE 'SELECT%';

    このクエリは実行中のSELECT文のみを抽出します。

これらの方法を使用することで、現在実行中のSELECT文の一覧を確認できます。また、必要に応じて条件を追加して、特定のユーザーやデータベースに関連するクエリのみを表示することも可能です。

実行中のクエリをキルする#

実行中のクエリをキルするには、以下の手順を行います:

  1. KILLコマンドを使用してクエリを終了する:
    KILL <プロセスID>;

複数のクエリを一括でキルする場合は、以下の方法が使えます:

  1. 長時間実行中のクエリのIDを取得:

    SELECT GROUP_CONCAT(ID) FROM INFORMATION_SCHEMA.PROCESSLIST WHERE TIME > 59;
  2. mysqladminコマンドを使用して複数のクエリを一括キル:

    mysqladmin kill ID1,ID2,ID3 -h localhost -u ユーザー名

注意点:

  • クエリをキルする前に、そのクエリの重要性を確認してください。
  • KILL CONNECTIONを使用すると接続も終了しますが、KILL QUERYはクエリのみを終了します。
  • Amazon RDS for MySQLを使用している場合は、mysql.rds_kill_queryストアドプロシージャを使用できます。