show processlist和show full processlist processlist命令的輸出結果顯示了有哪些線程在運行,不僅可以查看當前所有的連接數,還可以查看當前的連接狀態幫助識別出有問題的查詢語句等。 如果是root帳號,能看到所有用戶的當前連接。如果是其他普通帳號,則只能看到 ...
show processlist和show full processlist
processlist命令的輸出結果顯示了有哪些線程在運行,不僅可以查看當前所有的連接數,還可以查看當前的連接狀態幫助識別出有問題的查詢語句等。
如果是root帳號,能看到所有用戶的當前連接。如果是其他普通帳號,則只能看到自己占用的連接。showprocesslist只能列出當前100條。如果想全部列出,可以使用SHOW FULL PROCESSLIST命令
mysql> show processlist;
+----+------+--------------------+------+---------+-------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+--------------------+------+---------+-------+-------+------------------+
| 1 | root | localhost | NULL | Sleep | 12 | | NULL |
| 2 | root | 192.168.100.1:7437 | test | Sleep | 8035 | | NULL |
| 3 | root | 192.168.100.1:7438 | NULL | Sleep | 24348 | | NULL |
| 5 | root | 192.168.100.1:7443 | NULL | Sleep | 24317 | | NULL |
| 7 | root | 192.168.100.1:7450 | test | Sleep | 24272 | | NULL |
| 9 | root | 192.168.100.1:5152 | test | Query | 0 | init | show processlist |
+----+------+--------------------+------+---------+-------+-------+------------------+
6 rows in set
mysql> show full processlist;
+----+------+--------------------+------+---------+-------+-------+-----------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+--------------------+------+---------+-------+-------+-----------------------+
| 1 | root | localhost | NULL | Sleep | 19 | | NULL |
| 2 | root | 192.168.100.1:7437 | test | Sleep | 8042 | | NULL |
| 3 | root | 192.168.100.1:7438 | NULL | Sleep | 24355 | | NULL |
| 5 | root | 192.168.100.1:7443 | NULL | Sleep | 24324 | | NULL |
| 7 | root | 192.168.100.1:7450 | test | Sleep | 24279 | | NULL |
| 9 | root | 192.168.100.1:5152 | test | Query | 0 | init | show full processlist |
+----+------+--------------------+------+---------+-------+-------+-----------------------+
6 rows in set
各個列的含義:
①.id列,用戶登錄mysql時,系統分配的"connection_id",可以使用函數connection_id()查看
②.user列,顯示當前用戶。如果不是root,這個命令就只顯示用戶許可權範圍的sql語句
③.host列,顯示這個語句是從哪個ip的哪個埠上發的,可以用來跟蹤出現問題語句的用戶
④.db列,顯示這個進程目前連接的是哪個資料庫
⑤.command列,顯示當前連接的執行的命令,一般取值為休眠(sleep),查詢(query),連接(connect)等
⑥.time列,顯示這個狀態持續的時間,單位是秒
⑦.state列,顯示使用當前連接的sql語句的狀態,很重要的列。state描述的是語句執行中的某一個狀態。一個sql語句,以查詢為例,可能需要經過copying to tmp table、sorting result、sending data等狀態才可以完成
⑧.info列,顯示這個sql語句,是判斷問題語句的一個重要依據
在主從複製環境中,show processlist或show full processlist對於判斷狀態很有幫助,例如下麵的state列: