Documentation Home
MySQL 8.0 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 36.1Mb
PDF (A4) - 36.2Mb


このページは機械翻訳したものです。

8.14.1 プロセスリストへのアクセス

次の説明では、プロセス情報のソース、プロセス情報の表示に必要な特権を列挙し、プロセスリストエントリの内容について説明します。

プロセス情報のソース

プロセス情報は、次のソースから入手できます:

threads テーブルは、SHOW PROCESSLISTINFORMATION_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 は、スレッドに関連付けられているクライアントの接続識別子です。

  • UserHost は、スレッドに関連付けられているアカウントを示します。

  • db はスレッドのデフォルトデータベースで、何も選択されていない場合は NULL です。

  • CommandState は、スレッドが何を実行しているかを示します。

    ほとんどの状態がきわめてすばやい操作に対応します。 スレッドの状態が何秒間も特定の状態にとどまっている場合は、調査が必要な問題が発生している可能性があります。

    以下のセクションでは、Command の可能な値と、カテゴリ別にグループ化した State の値を説明します。 これらの一部の値の意味は自明です。 その他については追加の説明を提供しています。

    注記

    プロセスリスト情報を検査するアプリケーションは、コマンドと状態が変更される可能性があることに注意する必要があります。

  • Time は、スレッドの現在の状態がどれだけ続いているかを示します。 特定の場合に、スレッドの現在の時間の概念が変わることがあります。スレッドは、SET TIMESTAMP = value によって時間を変更することがあります。 レプリカ SQL スレッドの場合、この値は、最後にレプリケートされたイベントのタイムスタンプとレプリカホストのリアルタイムの間の秒数です。 セクション17.2.3「レプリケーションスレッド」を参照してください。

  • Info は、スレッドが実行しているステートメントを示します。ステートメントを実行していない場合は NULL を示します。 SHOW PROCESSLIST の場合、この値にはステートメントの最初の 100 文字のみが含まれます。 完全なステートメントを表示するには、SHOW FULL PROCESSLIST を使用します (または、異なるプロセス情報ソースをクエリーします)。