processlist 命令的输出结果显示了有哪些线程在运行,不仅可以查看当前所有的连接数,还可以查看当前的连接状态帮助识别出有问题的查询语句等。
如果是 root 帐号,能看到所有用户的当前连接。如果是其他普通帐号,则只能看到自己占用的连接。show processlist 只能列出当前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 | 用户登录 mysq l时,系统分配的"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列: