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

MySQLで「SHOW PROCESSLIST」をカスタマイズする方法|INFORMATION_SCHEMA.PROCESSLISTの活用術

MySQLのプロセス一覧をカスタマイズ表示するには

MySQLでは、通常のコマンド「SHOW PROCESSLIST」の代わりに、information_schema.processlistテーブルを利用することで、プロセス一覧を柔軟にカスタマイズできます。比較的新しいバージョンのMySQLでは、「SHOW PROCESSLIST」コマンドを「information_schema」経由で実行できるようになっています。

INFORMATION_SCHEMA.PROCESSLISTは、MySQL 5.1.7以降で追加された機能です。まずは、使用しているMySQLのバージョンを確認しておきましょう。

MySQLのバージョン確認方法

バージョンを確認するには、以下のクエリを実行します。

mysql> select version();

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

+-----------+
| version() |
+-----------+
| 8.0.12    |
+-----------+
1 row in set (0.00 sec)

カスタマイズ版「SHOW PROCESSLIST」の実行

バージョンが確認できたら、カスタマイズ可能な「SHOW PROCESSLIST」として、次のクエリを実行します。

mysql> SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST;

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

+----+-----------------+-----------------+----------+---------+-------+------------------------+----------------------------------------------+
| ID | USER            | HOST            | DB       | COMMAND | TIME  | STATE                  | INFO                                         |
+----+-----------------+-----------------+----------+---------+-------+------------------------+----------------------------------------------+
|  8 | root            | localhost:50599 | business | Query   |     0 | executing              | SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST |
|  9 | root            | localhost:53404 | NULL     | Sleep   |   132 |                        | NULL                                         |
|  4 | event_scheduler | localhost       | NULL     | Daemon  | 71998 | Waiting on empty queue | NULL                                         |
+----+-----------------+-----------------+----------+---------+-------+------------------------+----------------------------------------------+
3 rows in set (0.06 sec)

INFORMATION_SCHEMA.PROCESSLISTを使うメリット

INFORMATION_SCHEMA.PROCESSLISTは通常のテーブルと同様に扱えるため、WHERE句やORDER BY句を組み合わせた絞り込みや並べ替えが自由に行えます。例えば、特定ユーザーの接続だけを抽出したり、実行時間の長いクエリを上位から表示したりすることも可能です。

-- 実行時間が60秒以上のクエリのみ表示する例
mysql> SELECT ID, USER, HOST, DB, COMMAND, TIME, STATE, INFO
    -> FROM INFORMATION_SCHEMA.PROCESSLIST
    -> WHERE TIME >= 60
    -> ORDER BY TIME DESC;

このように、標準コマンドでは不可能な条件指定やソートができる点が、INFORMATION_SCHEMA.PROCESSLISTを活用する最大のメリットです。サーバーのパフォーマンス監視やトラブルシューティングの際に、ぜひ活用してみてください。

  1. MySQLで月を指定してデータを抽出する方法(MONTH()関数の使い方)

    MySQLで日付データから特定の「月」に該当するレコードだけを抽出したい場合は、MONTH()関数を使うのが便利です。この記事では、実際にテーブルを作成し、サンプルデータを挿入しながら、月を条件にしたSELECT文の書き方を具体的に解説します。1. サンプルテーブルの作成まずは、出荷日(Shippingdate)を格納するdatetime型のカラムを持つテーブルを作成します。mysql> create table DemoTable1599    -> (    -> Shippingdate d

  2. MySQLのバージョンを確認する方法をわかりやすく解説

    この記事では、現在利用しているMySQLサーバーのバージョンを確認する方法について詳しく解説します。コンソールでクエリを実行する前に、まずクライアントがサーバーに正しく接続されていることを確認しておきましょう。接続が確立されていないと、クエリを実行しても結果を取得できません。MySQLのバージョンを確認する基本クエリ以下のクエリを実行すると、使用中のサーバーのバージョン番号と、実行時点の日付を同時に取得できます。mysql> SELECT VERSION(), CURRENT_DATE;ポイント: 関数「VERSION()」や「CURRENT_DATE」は大文字・小文字を区別しません。つ