MySQL 进程列表指示当前由服务器内执行的一组线程执行的操作。该
PROCESSLIST表是过程信息的来源之一。有关此表与其他来源的比较,请参阅流程信息来源。
该PROCESSLIST表有以下列:
ID连接标识符。这与语句
Id列中 显示的值、Performance Schema表列中显示的值以及线程内 的函数返回的 值相同。SHOW PROCESSLISTPROCESSLIST_IDthreadsCONNECTION_ID()USER发出语句的 MySQL 用户。值是
system user指由服务器产生的非客户端线程来处理内部任务,例如,延迟行处理程序线程或副本主机上使用的 I/O 或 SQL 线程。对于system user,列中没有指定主机Host。unauthenticated user指的是已与客户端连接相关联但尚未对客户端用户进行身份验证的线程。event_scheduler指的是监视计划事件的线程(请参阅 第 23.4 节,“使用事件计划程序”)。HOST发出语句的客户端的主机名(除了
system user,它没有主机)。TCP/IP 连接的主机名以 格式报告,以便更容易确定哪个客户端正在做什么。host_name:client_portDB线程的默认数据库,或者
NULL如果未选择任何数据库。COMMAND线程代表客户端执行的命令类型,或者
Sleep会话是否空闲。有关线程命令的说明,请参阅 第 8.14 节,“检查服务器线程(进程)信息”。此列的值对应于 客户端/服务器协议和 状态变量的命令。请参阅第 5.1.9 节,“服务器状态变量”。COM_xxxCom_xxxTIME线程处于其当前状态的时间(以秒为单位)。对于副本 SQL 线程,该值是最后一个复制事件的时间戳与副本主机的实际时间之间的秒数。请参阅 第 16.2.3 节,“复制线程”。
STATE指示线程正在做什么的操作、事件或状态。有关
STATE值的说明,请参阅第 8.14 节,“检查服务器线程(进程)信息”。大多数状态对应于非常快速的操作。如果线程在给定状态下停留数秒,则可能存在需要调查的问题。
INFO线程正在执行的语句,或者
NULL如果它没有执行任何语句。该语句可能是发送到服务器的语句,如果该语句执行其他语句,则可能是最里面的语句。例如,如果一个CALL语句执行一个正在执行SELECT语句的存储过程,则该INFO值显示该SELECT语句。
笔记
PROCESSLIST是一个非标准INFORMATION_SCHEMA表。与
SHOW PROCESSLIST语句的输出一样,该PROCESSLIST表提供有关所有线程的信息,如果您有PROCESS权限,甚至包括属于其他用户的线程。否则(没有PROCESS特权),非匿名用户可以访问关于他们自己的线程的信息,但不能访问其他用户的线程,而匿名用户则不能访问线程信息。如果 SQL 语句引用该
PROCESSLIST表,则当语句开始执行时,MySQL 会填充整个表一次,因此在语句期间存在读取一致性。多语句事务没有读取一致性。
以下语句是等效的:
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST
SHOW FULL PROCESSLIST