PROCESSLIST

最近更新时间:2026-04-22 10:02:46

我的收藏

功能

INFORMATION_SCHEMA.PROCESSLIST 表用于展示实例内当前所有会话(线程)的运行状态信息,可用于查看会话连接情况、定位慢查询、排查长事务等场景。
该表在原生 MySQL PROCESSLIST 的基础上扩展了 TIME_MSROWS_SENTROWS_EXAMINEDTID 等字段,提供更精细的会话运行时观测能力。
说明:
未授予 PROCESS 权限的用户,仅能查看自身会话的信息。
授予 PROCESS 权限后,可查看实例内全部会话的信息。
可通过 SHOW PROCESSLISTSHOW FULL PROCESSLIST 语句获取类似信息,其中 INFO 列在 SHOW PROCESSLIST 中最多显示100个字符,在 SHOW FULL PROCESSLISTINFORMATION_SCHEMA.PROCESSLIST 中完整显示。

字段说明

字段名
类型
描述
ID
bigint unsigned
会话连接 ID,对应 CONNECTION_ID() 返回值,可用作 KILL 语句的参数。
USER
varchar(32)
发起该会话的 MySQL 用户名。系统会话显示为 system user,未完成认证的会话显示为 unauthenticated user
HOST
varchar(261)
发起该会话的客户端主机名或 IP 地址,格式为 host_name:portip:port
DB
varchar(64)
该会话当前使用的默认数据库名。若未选择默认数据库,取值为 NULL
COMMAND
varchar(16)
该会话正在执行的命令类型,常见取值包括 SleepQueryConnectBinlog DumpKilled 等。
TIME
int
当前 COMMAND 已持续的时间,单位为秒。
STATE
varchar(64)
线程正在进行的动作、事件或状态,用于描述会话当前所处的执行阶段。取值为 NULL 表示无状态信息。
INFO
varchar(65535)
该会话正在执行的 SQL 语句。若未执行任何语句,取值为 NULL
TIME_MS
bigint
当前 COMMAND 已持续的时间,单位为毫秒,提供比 TIME 字段更高精度的计时。
ROWS_SENT
bigint unsigned
该会话当前语句已经向客户端返回的行数。
ROWS_EXAMINED
bigint unsigned
该会话当前语句已经扫描的行数,可用于辅助定位执行效率异常的 SQL。
TID
bigint unsigned
该会话对应的协程 ID(即 bthread 的 ID),若该会话没有使用协程,取值为 0。用于在系统侧排查线程级问题。

示例

查询当前实例所有会话信息:
tdsql> SELECT * FROM information_schema.PROCESSLIST\\G
*************************** 1. row ***************************
ID: 2155297
USER: test
HOST: 10.10.10.10:59078
DB: __tdsql_recycle_bin__
COMMAND: Query
TIME: 0
STATE: executing
INFO: SELECT * FROM `information_schema`.`PROCESSLIST`
TIME_MS: 2
ROWS_SENT: 0
ROWS_EXAMINED: 0
TID: 268435659
*************************** 2. row ***************************
ID: 2149066
USER: tdsql3_sys_local
HOST: localhost
DB: NULL
COMMAND: Sleep
TIME: 9
STATE: NULL
INFO: NULL
TIME_MS: 8726
ROWS_SENT: 4
ROWS_EXAMINED: 4
TID: 421765955
2 rows in set (0.01 sec)
查询执行时长超过10秒的会话:
SELECT ID, USER, HOST, DB, COMMAND, TIME, STATE, INFO
FROM information_schema.PROCESSLIST
WHERE COMMAND <> 'Sleep' AND TIME > 10
ORDER BY TIME DESC;
根据 ID 终止指定会话:
KILL 2155297;