SHOW [FULL] PROCESSLIST
SHOW PROCESSLIST
的 INFORMATION SCHEMA 实现已弃用,并可能在未来的 MySQL 版本中被移除。建议改用 Performance Schema 实现的 SHOW PROCESSLIST
。
MySQL 进程列表指示当前由服务器内执行的线程集执行的操作。 SHOW PROCESSLIST
语句是进程信息的一种来源。有关此语句与其他来源的比较,请参阅 进程信息的来源。
基于 Performance Schema processlist
表的 SHOW PROCESSLIST
的备用实现可用,与默认的 SHOW PROCESSLIST
实现不同,它不需要互斥锁,并且具有更好的性能特性。有关详细信息,请参阅 第 29.12.22.7 节,“processlist 表”。
如果您拥有 PROCESS
权限,您可以查看所有线程,即使是属于其他用户的线程。 否则(没有 PROCESS
权限),非匿名用户可以访问他们自己的线程的信息,但不能访问其他用户的线程,而匿名用户无法访问线程信息。
没有 FULL
关键字,SHOW PROCESSLIST
只显示 Info
字段中每个语句的前 100 个字符。
SHOW PROCESSLIST
语句非常有用,如果您收到 “连接过多” 错误消息,并希望找出发生了什么事。 MySQL 保留一个额外的连接供拥有 CONNECTION_ADMIN
权限(或已弃用的 SUPER
权限)的帐户使用,以确保管理员始终能够连接并检查系统(假设您没有将此权限授予所有用户)。
可以使用 KILL
语句杀死线程。 请参阅 第 15.7.8.4 节,"KILL 语句"。
SHOW PROCESSLIST
输出示例
mysql> SHOW FULL PROCESSLIST\G
*************************** 1. row ***************************
Id: 1
User: system user
Host:
db: NULL
Command: Connect
Time: 1030455
State: Waiting for source to send event
Info: NULL
*************************** 2. row ***************************
Id: 2
User: system user
Host:
db: NULL
Command: Connect
Time: 1004
State: Has read all relay log; waiting for the replica
I/O thread to update it
Info: NULL
*************************** 3. row ***************************
Id: 3112
User: replikator
Host: artemis:2204
db: NULL
Command: Binlog Dump
Time: 2144
State: Has sent all binlog to replica; waiting for binlog to be updated
Info: NULL
*************************** 4. row ***************************
Id: 3113
User: replikator
Host: iconnect2:45781
db: NULL
Command: Binlog Dump
Time: 2086
State: Has sent all binlog to replica; waiting for binlog to be updated
Info: NULL
*************************** 5. row ***************************
Id: 3123
User: stefan
Host: localhost
db: apollon
Command: Query
Time: 0
State: NULL
Info: SHOW FULL PROCESSLIST
SHOW PROCESSLIST
输出包含以下列
连接标识符。 这与
INFORMATION_SCHEMA
PROCESSLIST
表的ID
列中显示的值相同,在 Performance Schemathreads
表的PROCESSLIST_ID
列中显示,并由线程内的CONNECTION_ID()
函数返回。发出语句的 MySQL 用户。
system user
值是指由服务器内部生成以处理任务的非客户端线程,例如,延迟行处理线程或在副本主机上使用的 I/O(接收器)或 SQL(应用器)线程。 对于system user
,Host
列中没有指定主机。unauthenticated user
指的是已与客户端连接相关联但尚未对客户端用户进行身份验证的线程。event_scheduler
指的是监视计划事件的线程(请参阅 第 27.5 节,"使用事件调度器")。注意User
值为system user
与SYSTEM_USER
权限不同。 前者指定内部线程。 后者区分系统用户和常规用户帐户类别(请参阅 第 8.2.11 节,"帐户类别")。发出语句的客户端的主机名(
system user
除外,因为它没有主机)。 TCP/IP 连接的主机名以
格式报告,以便更轻松地确定哪个客户端在执行什么操作。host_name
:client_port
线程的默认数据库,如果未选择数据库,则为
NULL
。线程代表客户端执行的命令类型,如果会话处于空闲状态,则为
Sleep
。 有关线程命令的说明,请参阅 第 10.14 节,"检查服务器线程(进程)信息"。 此列的值对应于客户端/服务器协议的COM_
命令和xxx
Com_
状态变量。 请参阅 第 7.1.10 节,"服务器状态变量"。xxx
线程处于当前状态的时间(以秒为单位)。 对于副本 SQL 线程,该值是在最后复制的事件的时间戳和副本主机上的实际时间之间的时间差(以秒为单位)。 请参阅 第 19.2.3 节,"复制线程"。
指示线程正在执行的操作、事件或状态。 有关
State
值的说明,请参阅 第 10.14 节,"检查服务器线程(进程)信息"。大多数状态对应于非常快的操作。 如果线程在给定状态下停留了数秒钟,则可能存在需要调查的问题。
线程正在执行的语句,如果它没有执行任何语句,则为
NULL
。 该语句可能是发送到服务器的语句,或者如果该语句执行其他语句,则是最内部的语句。 例如,如果CALL
语句执行一个正在执行SELECT
语句的存储过程,则Info
值将显示SELECT
语句。