INFORMATION_SCHEMA.PROCESSLIST
已被弃用,将在未来 MySQL 版本中删除。因此,使用此表的 SHOW PROCESSLIST
实现也被弃用。建议使用性能模式的 PROCESSLIST
实现。
MySQL 进程列表指示当前正在服务器中执行的线程集执行的操作。 PROCESSLIST
表是进程信息的一个来源。有关此表与其他来源的比较,请参见 进程信息的来源.
PROCESSLIST
表具有以下列
ID
连接标识符。这与
SHOW PROCESSLIST
语句的Id
列中显示的值相同,与性能模式threads
表的PROCESSLIST_ID
列中显示的值相同,并且由线程内的CONNECTION_ID()
函数返回。USER
发出语句的 MySQL 用户。值为
system user
指的是服务器内部生成的非客户端线程,用于处理内部任务,例如延迟行处理线程或副本主机上使用的 I/O 或 SQL 线程。对于system user
,Host
列中没有指定主机。unauthenticated user
指的是已与客户端连接关联但尚未对客户端用户进行身份验证的线程。event_scheduler
指的是监视计划事件的线程(请参见 第 27.5 节,“使用事件调度程序”)。注意USER
值为system user
与SYSTEM_USER
权限不同。前者表示内部线程。后者区分系统用户和常规用户帐户类别(请参见 第 8.2.11 节,“帐户类别”)。HOST
发出语句的客户端的主机名(
system user
除外,它没有主机)。TCP/IP 连接的主机名以
格式报告,以便更容易确定哪个客户端正在执行什么操作。host_name
:client_port
DB
线程的默认数据库,或者如果没有选择数据库,则为
NULL
。COMMAND
线程代表客户端执行的命令类型,或者如果会话处于空闲状态,则为
Sleep
。有关线程命令的说明,请参见 第 10.14 节,“检查服务器线程(进程)信息”。此列的值对应于客户端/服务器协议的COM_
命令和xxx
Com_
状态变量。请参见 第 7.1.10 节,“服务器状态变量”.xxx
TIME
线程处于当前状态的时间(以秒为单位)。对于副本 SQL 线程,该值是最后一个复制事件的时间戳与副本主机的实际时间之间的时间差。请参见 第 19.2.3 节,“复制线程”.
STATE
指示线程正在执行的操作、事件或状态。有关
STATE
值的说明,请参见 第 10.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
您可以通过检查服务器状态变量 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 时间戳表示。