MySQL 8.0 リファレンスマニュアル


13.7.7.29 SHOW PROCESSLIST ステートメント

SHOW [FULL] PROCESSLIST

MySQL プロセスリストには、サーバー内で実行されているスレッドのセットによって現在実行されている操作が示されます。 SHOW PROCESSLIST ステートメントは、プロセス情報のソースです。 このステートメントと他のソースの比較については、プロセス情報のソース を参照してください。

注記

MySQL 8.0.22 の時点では、SHOW PROCESSLIST の代替実装はパフォーマンススキーマ processlist テーブルに基づいて使用できます。これは、デフォルトの SHOW PROCESSLIST 実装とは異なり、mutex を必要とせず、パフォーマンス特性が向上します。 詳細は、セクション27.12.19.9「processlist テーブル」を参照してください。

PROCESS 権限を持っている場合は、他のユーザーに属するスレッドも含めて、すべてのスレッドを表示できます。 それ以外の場合 (PROCESS 権限なし)、非匿名ユーザーは自分のスレッドに関する情報にはアクセスできますが、他のユーザーのスレッドにはアクセスできず、匿名ユーザーはスレッド情報にアクセスできません。

FULL キーワードを指定しない場合、SHOW PROCESSLIST では、Info フィールドに各ステートメントの最初の 100 文字のみが表示されます。

SHOW PROCESSLIST ステートメントは、接続が多すぎますというエラーメッセージが表示されるために、何が発生しているかを突き止めたい場合に非常に役立ちます。 MySQL では、管理者が常にシステムに接続してチェックできるように、CONNECTION_ADMIN 権限 (または非推奨の SUPER 権限) を持つアカウントで使用される追加接続が予約されています (この権限をすべてのユーザーに付与していないことを前提としています)。

スレッドは、KILL ステートメントを使用して強制終了できます。 セクション13.7.8.4「KILL ステートメント」を参照してください。

SHOW PROCESSLIST 出力の例:

mysql> SHOW FULL PROCESSLIST\G
*************************** 1. row ***************************
     Id: 1
   User: system user
   Host:
     db: NULL
Command: Connect
   Time: 1030455
  State: Waiting for master to send event
   Info: NULL
*************************** 2. row ***************************
     Id: 2
   User: system user
   Host:
     db: NULL
Command: Connect
   Time: 1004
  State: Has read all relay log; waiting for the slave
         I/O thread to update it
   Info: NULL
*************************** 3. row ***************************
     Id: 3112
   User: replikator
   Host: artemis:2204
     db: NULL
Command: Binlog Dump
   Time: 2144
  State: Has sent all binlog to slave; waiting for binlog to be updated
   Info: NULL
*************************** 4. row ***************************
     Id: 3113
   User: replikator
   Host: iconnect2:45781
     db: NULL
Command: Binlog Dump
   Time: 2086
  State: Has sent all binlog to slave; waiting for binlog to be updated
   Info: NULL
*************************** 5. row ***************************
     Id: 3123
   User: stefan
   Host: localhost
     db: apollon
Command: Query
   Time: 0
  State: NULL
   Info: SHOW FULL PROCESSLIST

SHOW PROCESSLIST 出力には、次のカラムがあります:

  • Id

    接続識別子。 これは、INFORMATION_SCHEMA PROCESSLIST テーブルの ID カラムに表示される値と同じで、パフォーマンススキーマ threads テーブルの PROCESSLIST_ID カラムに表示され、スレッド内で CONNECTION_ID() 関数によって返されます。

  • User

    このステートメントを発行した MySQL ユーザー。 system user の値は、遅延行ハンドラスレッド、レプリカホストで使用される I/O または SQL スレッドなど、タスクを内部的に処理するためにサーバーによって起動される非クライアントスレッドを指します。 system user の場合、Host カラムにホストが指定されていません。unauthenticated user は、クライアント接続に関連付けられたが、クライアントユーザーの認証がまだ行われていないスレッドを参照します。event_scheduler は、スケジュールされたイベントをモニターするスレッドを指します (セクション25.4「イベントスケジューラの使用」 を参照)。

    注記

    system userUser 値は、SYSTEM_USER 権限とは異なります。 前者は内部スレッドを指定します。 後者は、システムユーザーと通常のユーザーアカウントカテゴリを区別します (セクション6.2.11「アカウントカテゴリ」 を参照)。

  • Host

    ステートメントを発行するクライアントのホスト名 (ホストがない system user を除く)。 TCP/IP 接続のホスト名は、host_name:client_port 形式でレポートされるため、どのクライアントが何を実行しているかを簡単に判別できます。

  • db

    スレッドのデフォルトデータベース。選択されていない場合は NULL

  • コマンド

    スレッドがクライアントのかわりに実行しているコマンドのタイプ。セッションがアイドル状態の場合は Sleep。 スレッドコマンドの説明については、セクション8.14「サーバースレッド (プロセス) 情報の確認」を参照してください。 このカラムの値は、クライアント/サーバープロトコルの COM_xxx コマンドと Com_xxx ステータス変数に対応します。 セクション5.1.10「サーバーステータス変数」を参照してください。

  • 時間

    スレッドが現在の状態になってからの秒数。 レプリカ SQL スレッドの場合、この値は、最後にレプリケートされたイベントのタイムスタンプとレプリカホストのリアルタイムの間の秒数です。 セクション17.2.3「レプリケーションスレッド」を参照してください。

  • State

    スレッドが行なっていることを示すアクション、イベント、または状態。 State の値の詳細は、セクション8.14「サーバースレッド (プロセス) 情報の確認」 を参照してください。

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

  • Info

    スレッドが実行しているステートメント。ステートメントを実行していない場合は NULL。 このステートメントは、サーバーに送信されるステートメント、またはこのステートメントがほかのステートメントを実行する場合は、もっとも内側のステートメントである可能性があります。 たとえば、CALL ステートメントが、SELECT ステートメントを実行しているストアドプロシージャーを実行する場合、Info 値はその SELECT ステートメントを示します。


関連キーワード:  ステートメント, CREATE, TABLE, DROP, PROCESSLIST, サブクエリー, ユーザー, FUNCTION, カラム, SLAVE