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を活用する最大のメリットです。サーバーのパフォーマンス監視やトラブルシューティングの際に、ぜひ活用してみてください。
-
MySQLで月を指定してデータを抽出する方法(MONTH()関数の使い方)
MySQLで日付データから特定の「月」に該当するレコードだけを抽出したい場合は、MONTH()関数を使うのが便利です。この記事では、実際にテーブルを作成し、サンプルデータを挿入しながら、月を条件にしたSELECT文の書き方を具体的に解説します。1. サンプルテーブルの作成まずは、出荷日(Shippingdate)を格納するdatetime型のカラムを持つテーブルを作成します。mysql> create table DemoTable1599 -> ( -> Shippingdate d
-
MySQLのバージョンを確認する方法をわかりやすく解説
この記事では、現在利用しているMySQLサーバーのバージョンを確認する方法について詳しく解説します。コンソールでクエリを実行する前に、まずクライアントがサーバーに正しく接続されていることを確認しておきましょう。接続が確立されていないと、クエリを実行しても結果を取得できません。MySQLのバージョンを確認する基本クエリ以下のクエリを実行すると、使用中のサーバーのバージョン番号と、実行時点の日付を同時に取得できます。mysql> SELECT VERSION(), CURRENT_DATE;ポイント: 関数「VERSION()」や「CURRENT_DATE」は大文字・小文字を区別しません。つ