MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLのSHOW PROCESSLISTで表示されるすべてのプロセスを強制終了する方法

MySQLでは「KILL」コマンドを使ってプロセスを終了できます。ただし、MySQLには一括でプロセスを強制終了する専用のコマンドが用意されていないため、基本的にはプロセスを1つずつ終了していく必要があります。

現在のプロセス一覧を確認する

まず、現在存在するプロセスの一覧や状態を確認するには、「SHOW PROCESSLIST」を使用します。

mysql> show processlist;

実行結果は以下のとおりです。

+----+-----------------+-----------------+------+---------+------+------------------------+------------------+
| Id | User            | Host            | db   | Command | Time | State                  | Info             |
+----+-----------------+-----------------+------+---------+------+------------------------+------------------+
|  4 | event_scheduler | localhost       | NULL | Daemon  | 7986 | Waiting on empty queue | NULL             |
|  8 | root            | localhost:65180 | test | Query   |    0 | starting               | show processlist |
+----+-----------------+-----------------+------+---------+------+------------------------+------------------+
2 rows in set (0.00 sec)

条件に合うプロセスをKILLする

たとえば、10秒以上実行され続けているプロセスを終了したい場合は、information_schema.processlistを利用して以下のようなクエリを実行します。ここでは、Idが「4」のプロセスを対象としています。

mysql> select concat('kill ',4,';')
    -> from information_schema.processlist
    -> where TIME > 10;

実行すると、次のようにKILL文が生成されます。

+-----------------------+
| concat('kill ',4,';') |
+-----------------------+
| kill 4;               |
+-----------------------+
1 row in set (0.00 sec)

生成された「kill 4;」を実行すれば、該当するプロセスを終了できます。Timeの値を変更すれば、任意の実行時間を超えたプロセスだけを抽出することも可能です。

すべてのプロセスを一括で強制終了する方法

別の方法として、以下のようにシェル上でMySQLコマンドとawkを組み合わせると、表示されたすべてのプロセスを一括でKILLできます。

mysql -e "show full processlist;" -ss | awk '{print "KILL "$1";"}'| mysql

このコマンドは、「show full processlist」の出力から各プロセスのIDを自動的に抽出し、「KILL」文を生成してそのまま実行します。大量の接続が残ってしまっている場合などに便利です。ただし、必要なプロセスまで終了させてしまう恐れがあるため、実行前には対象のプロセスをよく確認してください。

  1. PythonでMySQLのデータベースやサーバー内の全テーブル一覧を取得・表示する方法

    開発を進めていると、データベース内に存在するすべてのテーブルの一覧を確認したい場面があります。そんなときに役立つのが SHOW TABLES コマンドです。SHOW TABLES コマンドを使うことで、特定のデータベース内のテーブル名だけでなく、サーバー全体に存在するテーブル名も表示できます。基本構文データベース内のテーブルを表示する場合は、次のように記述します。SHOW TABLESこのステートメントをカーソルオブジェクト経由で実行すると、データベース内に存在するテーブル名が返されます。一方、サーバー全体のテーブルを表示する場合は、information_schema を参照します。SELE

  2. Macで隠しファイルを表示する方法まとめ|Finder・ターミナル・ライブラリフォルダの全手順

    Macでファイルが見つからないとき、実はファイルが消えてしまったわけではなく、単に「非表示」になっているだけというケースは少なくありません。MacにもWindowsと同様に、OSの安定動作を保つために重要なファイルやフォルダをユーザーから隠す機能が備わっています。 この記事では、ターミナルコマンド、Finder、「ライブラリ」フォルダなど、Macで隠しファイルを表示するためのあらゆる方法をわかりやすく解説します。 Macの隠しファイルとは? 一部のファイルやフォルダはユーザーから見えないようになっていますが、実際にはOSのファイルシステム内に存在しています。隠しファイルを表示する設定にすれ