28.3.23 INFORMATION_SCHEMA PROCESSLIST 表
INFORMATION_SCHEMA.PROCESSLIST 已弃用,可能在未来的 MySQL 发布中被删除。因此,使用该表的SHOW PROCESSLIST
实现也已弃用。建议使用 Performance Schema 实现PROCESSLIST
。
MySQL 进程列表显示当前服务器中正在执行的线程操作。INFORMATION_SCHEMA.PROCESSLIST 表是进程信息的一种来源。对于该表与其他来源的比较,请参阅进程信息来源。
INFORMATION_SCHEMA.PROCESSLIST 表具有以下列:
-
ID
连接标识符。这与
SHOW PROCESSLIST
语句中的Id
列、性能chema的threads
表中的PROCESSLIST_ ID
列和CONNECTION_ID()
函数返回的值相同,都是当前线程的标识符。 -
USER
发出语句的 MySQL 用户。值为
system user
表示由服务器内部生成的非客户端线程,例如延迟行处理线程或副本主机上的 I/ O 或 SQL 线程。在system user
中,Host
列没有指定值。值为unauthenticated user
表示已经与客户端连接关联,但客户端用户身份验证还未完成的线程。值为event_scheduler
表示监控计划事件的线程(见第27.4节,“使用事件调度器”)。Note一个
USER
值为system user
与SYSTEM_ USER
特权不同。前者标识内部线程,而后者区分系统用户和常规用户账户类别(见HOST
-
HOST
客户端发出的语句的主机名称(除非是
system user
,否则没有主机名称)。TCP/IP连接的主机名称以
格式报告,以便更容易确定哪个客户端在做什么。host_name
:client_port
-
客户端在 behalf of 客户端执行的命令类型,或者如果会话处于空闲状态,则为
Sleep
。关于线程命令的描述,请见TIME
-
TIME
当前线程的时间,以秒为单位。对于副本SQL线程,值是副本主机的实际时间和最后一次复制事件的时间戳之间的秒数。请参阅第19.2.3节,“Replication Threads”。
-
STATE
表示线程正在做什么的动作、事件或状态。关于
STATE
值的描述,请参阅第10.14节,“Examining Server Thread (Process) Information”。大多数状态对应于非常快速的操作。如果线程在给定的状态中停留了许多秒,那可能需要调查一下问题。
-
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
可以通过检查服务器状态变量Deprecated_use_i_s_processlist_count
和Deprecated_use_i_s_processlist_last_timestamp
来获取关于该表的使用信息。Deprecated_use_i_s_processlist_count
显示自上一次服务器重启以来,PROCESSLIST
表被访问的次数;Deprecated_use_i_s_processlist_last_timestamp
提供了最后一次访问该表的时间,以Unix时间戳形式。