-
Notifications
You must be signed in to change notification settings - Fork 111
PROCESSLIST
xiaoboluo768 edited this page Jun 7, 2020
·
2 revisions
- 该表提供查询一些关于线程运行过程中的状态信息
- 与SHOW processlist;语句输出信息一样,如果你没有process权限,则只能看到你自己的线程信息,如果有super权限,则可以看到所有其他用户的线程信息,如果是匿名用户,则不能看到任何线程信息
- INFORMATION_SCHEMA.PROCESSLIST表中只记录线程当前正在执行的语句信息,一旦语句执行完成,或者是多语句的事务中,先执行完成的语句,在该表中是无法查看到的
- processlist信息也可从perform_schema.threads表中获取。并且查询该表中的线程信息不需要互斥体,对服务器性能的影响最小(查询INFORMATION_SCHEMA.PROCESSLIST和SHOW PROCESSLIST语句需要互斥体,因此会一定程度上影响性能),该表中还包含后台线程的信息(INFORMATION_SCHEMA.PROCESSLIST和SHOW PROCESSLIST不显示后台线程信息)。threads表能够获取渠道不能获取的信息,也就意味着可以用该表中的信息来监听其他所有线程的活动情况
- 该表为InnoDB引擎临时表
- PS:
* SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST和SHOW FULL PROCESSLIST两个语句查询的结果集完全相同 * 另外还可以使用mysqladmin processlist命令查看线程信息 * 在使用show命令查看线程信息时,如果你不使用show full子句,则info列只会显示语句的前100个字节字符串 * 在尝试连接MySQL时报"too many connections"时,可以使用带有super权限的用户(前提是你没有把super权限分配给管理员之外的其他用户)连接到MySQL中,使用这些语句查看是什么用户或者主机占用了过多的连接数 * 线程信息中的ID列,可以用kill语句杀死(但需要用户具有super权限),kill query id;只杀死该线程正在执行的查询语句,kill id;可以把该线程的会话连接杀死,当kill一个线程或者一个查询时,会释放掉占用的资源并回滚正在执行的操作(例如:删除临时表,释放锁,回滚DML事务操作等,但不支持事务的DML语句除外),所以根据具体执行的语句不同kill掉一个连接或者查询的时间开销不同。详见链接:https://dev.mysql.com/doc/refman/5.7/en/kill.html
- 表定义语句
CREATE TEMPORARY TABLE `PROCESSLIST` (
`ID` bigint(21) unsigned NOT NULL DEFAULT '0',
`USER` varchar(32) NOT NULL DEFAULT '',
`HOST` varchar(64) NOT NULL DEFAULT '',
`DB` varchar(64) DEFAULT NULL,
`COMMAND` varchar(16) NOT NULL DEFAULT '',
`TIME` int(7) NOT NULL DEFAULT '0',
`STATE` varchar(64) DEFAULT NULL,
`INFO` longtext
) ENGINE=InnoDB DEFAULT CHARSET=utf8
- 表字段含义(该表中所有字段都为 "MySQL extension" 列)
- ID:连接进程标识符。这与在INFORMATION_SCHEMA.PROCESSLIST表的ID列,performance_schema.threads表的PROCESSLIST_ID列中显示的值是相同的值,都是由CONNECTION_ID()函数返回的值
- USER:执行语句的MySQL用户名称。如果显示的是“system user”,它指的是由服务器生成的非客户端线程正在执行内部任务。例如主备复制中从库上使用的I/O或SQL线程或延迟行处理程序的线程。“unauthenticated user”指的是已经建立客户端连接但是还没有对客户端连接的用户进行客户端用户的认证的线程。 “event_scheduler”是指监视计划任务调度事件的线程。对于“system user”,在Host列中显示为Null值
- HOST:执行语句的客户端的主机名(除了没有主机信息的“system user”之外)。 SHOW PROCESSLIST的Host列以host_name:client_port格式显示TCP/IP连接的主机名,以便更容易确定哪个客户端正在做什么事情
- DB:客户端连接的默认数据库(如果连接时指定了库名),否则显示为NULL值
- COMMAND:线程正在执行的命令的类型。此列的值对应于C/S协议和Com_xxx状态变量的COM_xxx命令。
- TIME:线程处于当前状态的时间数(以秒为单位)。对于从库SQL线程,该值是最后复制事件的时间戳和从库的实际时间之间的秒数(也可以理解为事件等待的时间)
- STATE:提示线程正在做什么样的操作,事件或状态。大多数状态所对应于的操作都执行的非常快。如果线程停留在某个状态很长时间,则表名该线程可能执行过程中碰到了某个问题,需要进行排查。对于SHOW PROCESSLIST语句,State列的值始终为NULL
- INFO:线程正在执行的语句,如果没有执行任何语句,则显示为NULL。语句可以是发送到服务器的语句,或者如果语句内部调用执行其他语句,即指的最内层调用的语句。例如,如果CALL语句调用存储过程,而存储过程中执行SELECT语句,则Info值将显示存储过程中的SELECT语句
- 表记录内容示例
admin@localhost : information_schema 06:06:57> select * from PROCESSLIST;
+----+-------+-------------------+--------------------+------------------+-------+---------------------------------------------------------------+---------------------------+
| ID | USER | HOST | DB | COMMAND | TIME | STATE | INFO |
+----+-------+-------------------+--------------------+------------------+-------+---------------------------------------------------------------+---------------------------+
| 4 | admin | localhost | information_schema | Query | 0 | executing | select * from PROCESSLIST |
| 9 | admin | localhost | performance_schema | Sleep | 8900 | | NULL |
| 3 | qfsys | 10.10.20.15:60481 | NULL | Binlog Dump GTID | 34076 | Master has sent all binlog to slave; waiting for more updates | NULL |
+----+-------+-------------------+--------------------+------------------+-------+---------------------------------------------------------------+---------------------------+
3 rows in set (0.00 sec)
- PS:该表中的信息还可以使用show full processlist;语句查看
root@localhost : information_schema 02:30:15> show full processlist\G;
*************************** 1. row ***************************
Id: 4
User: qfsys
Host: 192.168.2.120:48489
db: NULL
Command: Binlog Dump
Time: 15548
State: Master has sent all binlog to slave; waiting for more updates
Info: NULL
............
2 rows in set (0.00 sec)
- 参考资料
上一篇:PLUGINS表 |下一篇:PROFILING表
- 验证、测试、整理:罗小波
- QQ:309969177
- 提示:本系列文章的主体结构遵循Oracle MySQL 官方 5.7 手册中,关于information_schema、mysql schema、performance_schema、sys schema的章节结构体系,并额外添加了一些验证、测试数据。鉴于本人精力和能力有限,难免出现一些纰漏,欢迎大家踊跃指正!