次の説明では、プロセス情報のソース、プロセス情報の表示に必要な特権を列挙し、プロセスリストエントリの内容について説明します。
プロセス情報は、次のソースから入手できます:
SHOW PROCESSLIST
ステートメント: セクション13.7.7.29「SHOW PROCESSLIST ステートメント」mysqladmin processlist コマンド: セクション4.5.2「mysqladmin — A MySQL Server 管理プログラム」
INFORMATION_SCHEMA
PROCESSLIST
テーブル: セクション26.23「INFORMATION_SCHEMA PROCESSLIST テーブル」パフォーマンススキーマの
processlist
テーブル: セクション27.12.19.9「processlist テーブル」接頭辞が
PROCESSLIST_
の名前を持つパフォーマンススキーマthreads
テーブルのカラム: セクション27.12.19.10「スレッドテーブル」sys
スキーマのprocesslist
ビューおよびsession
ビュー: セクション28.4.3.22「processlist ビューと x$processlist ビュー」 および セクション28.4.3.33「セッションおよび x$session ビュー」
threads
テーブルは、SHOW PROCESSLIST
、INFORMATION_SCHEMA
PROCESSLIST
および mysqladmin processlist と次のように比較されます:
-
threads
テーブルへのアクセスに mutex は必要なく、サーバーのパフォーマンスへの影響は最小限です。 他のソースには mutex が必要なため、パフォーマンスに悪影響があります。注記MySQL 8.0.22 の時点では、
threads
テーブルと同様に mutex を必要とせず、より優れたパフォーマンス特性を持つパフォーマンススキーマprocesslist
テーブルに基づいて、SHOW PROCESSLIST
の代替実装を使用できます。 詳細は、セクション27.12.19.9「processlist テーブル」を参照してください。 threads
テーブルにバックグラウンドスレッドが表示されますが、他のソースには表示されません。 また、スレッドがフォアグラウンドまたはバックグラウンドスレッドであるかどうか、スレッドに関連付けられたサーバー内の場所など、他のソースが実行しない各スレッドの追加情報も提供します。 つまり、threads
テーブルを使用して、他のソースが監視できないスレッドアクティビティを監視できます。セクション27.12.19.10「スレッドテーブル」 で説明されているように、パフォーマンススキーマスレッドのモニタリングを有効または無効にできます。
このような理由から、他のスレッド情報ソースのいずれかを使用してサーバー監視を実行する DBA は、かわりに threads
テーブルを使用して監視できます。
sys
スキーマの processlist
ビューには、パフォーマンススキーマの threads
テーブルの情報がよりアクセスしやすい形式で表示されます。 sys
スキーマの session
ビューには、sys
スキーマの processlist
ビューなどのユーザーセッションに関する情報が表示されますが、バックグラウンドプロセスはフィルタで除外されます。
ほとんどのプロセス情報のソースでは、PROCESS
権限を持っている場合、他のユーザーに属するスレッドも含めて、すべてのスレッドを表示できます。 それ以外の場合 (PROCESS
権限なし)、非匿名ユーザーは自分のスレッドに関する情報にはアクセスできますが、他のユーザーのスレッドにはアクセスできず、匿名ユーザーはスレッド情報にアクセスできません。
パフォーマンススキーマ threads
テーブルはスレッド情報も提供しますが、テーブルアクセスは別の特権モデルを使用します。 セクション27.12.19.10「スレッドテーブル」を参照してください。
各プロセスリストエントリには、いくつかの情報が含まれています。 次のリストでは、SHOW PROCESSLIST
出力のラベルを使用してこれらについて説明します。 その他のプロセス情報ソースでは、同様のラベルが使用されます。
Id
は、スレッドに関連付けられているクライアントの接続識別子です。User
とHost
は、スレッドに関連付けられているアカウントを示します。db
はスレッドのデフォルトデータベースで、何も選択されていない場合はNULL
です。-
Command
とState
は、スレッドが何を実行しているかを示します。ほとんどの状態がきわめてすばやい操作に対応します。 スレッドの状態が何秒間も特定の状態にとどまっている場合は、調査が必要な問題が発生している可能性があります。
以下のセクションでは、
Command
の可能な値と、カテゴリ別にグループ化したState
の値を説明します。 これらの一部の値の意味は自明です。 その他については追加の説明を提供しています。注記プロセスリスト情報を検査するアプリケーションは、コマンドと状態が変更される可能性があることに注意する必要があります。
Time
は、スレッドの現在の状態がどれだけ続いているかを示します。 特定の場合に、スレッドの現在の時間の概念が変わることがあります。スレッドは、SET TIMESTAMP =
によって時間を変更することがあります。 レプリカ SQL スレッドの場合、この値は、最後にレプリケートされたイベントのタイムスタンプとレプリカホストのリアルタイムの間の秒数です。 セクション17.2.3「レプリケーションスレッド」を参照してください。value
Info
は、スレッドが実行しているステートメントを示します。ステートメントを実行していない場合はNULL
を示します。SHOW PROCESSLIST
の場合、この値にはステートメントの最初の 100 文字のみが含まれます。 完全なステートメントを表示するには、SHOW FULL PROCESSLIST
を使用します (または、異なるプロセス情報ソースをクエリーします)。