MySQL サーバーで何が実行されているかを確認しようとする場合、プロセスリストを調査すると役立つ場合があります。これは、サーバー内で現在実行されているスレッドのセットです。プロセスリストの情報はこれらのソースから入手できます。
SHOW [FULL] PROCESSLIST
ステートメント: セクション13.7.5.30「SHOW PROCESSLIST 構文」SHOW PROFILE
ステートメント: セクション13.7.5.32「SHOW PROFILES 構文」INFORMATION_SCHEMA
PROCESSLIST
テーブル: セクション21.15「INFORMATION_SCHEMA PROCESSLIST テーブル」mysqladmin processlist コマンド: セクション4.5.2「mysqladmin — MySQL サーバーの管理を行うクライアント」
performance_schema.threads
テーブル: セクション22.9.10「パフォーマンススキーマのその他のテーブル」
threads
へのアクセスには相互排他ロックは必要なく、サーバーパフォーマンスへの影響は最小です。INFORMATION_SCHEMA.PROCESSLIST
および SHOW PROCESSLIST
は、相互排他ロックを必要とするので、負のパフォーマンスの結果になります。threads
はまた、バックグラウンドスレッドに関する情報も表示しますが、INFORMATION_SCHEMA.PROCESSLIST
および SHOW PROCESSLIST
は表示しません。これは、threads
は、ほかのスレッド情報源では行えないアクティビティーのモニターに使用できることを意味します。
自分のスレッドに関する情報はいつでも表示できます。ほかのアカウントで実行されているスレッドに関する情報を表示するには、PROCESS
権限が必要です。
プロセスリストの各エントリには、いくつかの情報が含まれています。
Id
は、スレッドに関連付けられているクライアントの接続識別子です。User
とHost
は、スレッドに関連付けられているアカウントを示します。db
は、スレッドのデフォルトのデータベースで、または何も選択されていない場合はNULL
です。-
Command
とState
は、スレッドが何を実行しているかを示します。ほとんどの状態がきわめてすばやい操作に対応します。スレッドの状態が何秒間も特定の状態にとどまっている場合は、調査が必要な問題が発生している可能性があります。
Time
は、スレッドの現在の状態がどれだけ続いているかを示します。特定の場合に、スレッドの現在の時間の概念が変わることがあります。スレッドは、SET TIMESTAMP =
によって時間を変更することがあります。マスターからのイベントを処理しているスレーブで実行しているスレッドの場合、スレッドの時間はイベント内に見つかった時間に設定されるため、スレーブではなくマスターの現在の時間を反映します。value
Info
には、スレッドで実行されているステートメントのテキストが含まれるか、または何も実行されていない場合はNULL
です。デフォルトでは、この値にはステートメントの先頭の 100 文字だけが含まれます。完全なステートメントを表示するには、SHOW FULL PROCESSLIST
を使用します。
以下のセクションでは、Command
の可能な値と、カテゴリ別にグループ化した State
の値を説明します。これらの一部の値の意味は自明です。その他については追加の説明を提供しています。