Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
EPUB - 7.5Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


13.7.5.30 SHOW PROCESSLIST 構文

SHOW [FULL] PROCESSLIST

SHOW PROCESSLIST は、どのスレッドが実行されているかを表示します。この情報はまた、INFORMATION_SCHEMA PROCESSLIST テーブルまたは mysqladmin processlist コマンドからも取得できます。PROCESS 権限がある場合は、すべてのスレッドを表示できます。そうでない場合は、ユーザー独自のスレッド (つまり、使用している MySQL アカウントに関連付けられたスレッド) のみを表示できます。FULL キーワードを使用しない場合は、各ステートメントの最初の 100 文字のみが Info フィールドに表示されます。

処理情報は、performance_schema.threads テーブルから利用することもできます。ただし、threads へのアクセスには相互排他ロックは必要なく、サーバーパフォーマンスへの影響は最小です。INFORMATION_SCHEMA.PROCESSLIST および SHOW PROCESSLIST は、相互排他ロックを必要とするので、負のパフォーマンスの結果になります。threads はまた、バックグラウンドスレッドに関する情報も表示しますが、INFORMATION_SCHEMA.PROCESSLIST および SHOW PROCESSLIST は表示しません。これは、threads は、ほかのスレッド情報源では行えないアクティビティーのモニターに使用できることを意味します。

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

スレッドは、KILL ステートメントを使用して強制終了できます。セクション13.7.6.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
5 rows in set (0.00 sec)

SHOW PROCESSLIST によって生成されるカラムには、次の意味があります。

  • Id

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

  • User

    このステートメントを発行した MySQL ユーザー。これが system user である場合は、タスクを内部的に処理するためにサーバーによって生成された非クライアントスレッドを示します。これは、レプリケーションスレーブ上で使用されている I/O または SQL スレッドか、あるいは遅延行ハンドラである可能性があります。unauthenticated user は、クライアント接続に関連付けられたが、クライアントユーザーの認証がまだ実行されていないスレッドを示します。event_scheduler は、スケジュールされたイベントをモニターするスレッドを示します。system user の場合、Host カラムで指定されるホストは存在しません。

  • Host

    このステートメントを発行しているクライアントのホスト名 (ホストが存在しない system user を除きます)。SHOW PROCESSLIST は、どのクライアントが何を実行しているかの判定を容易にするために、TCP/IP 接続のホスト名を host_name:client_port の形式でレポートします。

  • db

    デフォルトデータベース (選択されている場合)。そうでない場合は NULL

  • Command

    スレッドが実行しているコマンドの種類。スレッドのコマンドの説明については、セクション8.12.5「スレッド情報の検査」を参照してください。このカラムの値は、クライアント/サーバープロトコルの COM_xxx コマンドと Com_xxx ステータス変数に対応します。セクション5.1.6「サーバーステータス変数」を参照してください

  • Time

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

  • State

    スレッドが行なっていることを示すアクション、イベント、または状態。State 値の説明については、セクション8.12.5「スレッド情報の検査」を参照してください。

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

    SHOW PROCESSLIST ステートメントの場合、State の値は NULL です。

  • Info

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


User Comments
  Posted by Daniel Schneller on August 6, 2007
The "Time" column will show almost the same value as "show slave status" for seconds_behind_master in replication scenarios (probably depending on replication speed) as long as there is still work to catch up (Status "Reading event from the relay log") - therefore it is usually counting backwards.
Once it "Has read all relay log" it will start counting upwards again to indicate the time it has been waiting.

...
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 5020
1 row in set (0,00 sec)

+----+-------------+-----------------+------+---------+------+----------------------------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+-------------+-----------------+------+---------+------+----------------------------------+------------------+
| 1 | root | localhost:32893 | NULL | Sleep | 0 | | NULL |
| 5 | system user | | NULL | Connect | 98 | Waiting for master to send event | NULL |
| 6 | system user | | NULL | Connect | 5018 | Reading event from the relay log | NULL |

  Posted by Baron Schwartz on October 12, 2008
If you get the error

ERROR 1227 (42000): Access denied; you need the PROCESS privilege for this operation

then you are probably connected as the anonymous user. Try running "select current_user" to see.
  Posted by Ben Black on September 15, 2011
To show processlist with out all the sleeping processes...

mysql> \P grep -v Sleep
Sign Up Login You must be logged in to post a comment.