功能描述
SHOW PROCESSLIST 用于查看当前正在执行的会话列表,返回内容包括会话 ID、执行用户、来源地址、执行语句和执行状态等信息,常用于定位耗时查询、连接异常等问题。TDSQL Boundless 是分布式数据库,默认情况下
SHOW PROCESSLIST 会自动汇聚展示集群内所有计算节点(CN)的会话,也可以通过 LOCAL 关键字仅查看当前连接节点的会话。这一点与仅能查看单机会话的社区 MySQL 不同。语法
SHOW [GLOBAL | LOCAL] [FULL | DETAIL] PROCESSLIST;
示例
示例一:查看集群所有节点的会话列表
不指定关键字时,默认等价于
SHOW GLOBAL PROCESSLIST,返回集群内所有计算节点的会话,Info 字段超过100个字符会被截断。tdsql > SHOW PROCESSLIST;+----+-------+--------+------+----------------+------+---------+------+-----------+-----------------------------+---------+-----------+---------------+| Id | Tid | Mem | User | Host | db | Command | Time | State | Info | Time_ms | Rows_sent | Rows_examined |+----+-------+--------+------+----------------+------+---------+------+-----------+-----------------------------+---------+-----------+---------------+| 3 | 47234 | 245760 | root | 10.0.0.5:52344 | test | Query | 0 | executing | SELECT * FROM t1 WHERE id=1 | 12 | 0 | 0 || 5 | 47235 | 131072 | root | 10.0.0.5:52350 | NULL | Sleep | 120 | NULL | NULL | 0 | 0 | 0 |+----+-------+--------+------+----------------+------+---------+------+-----------+-----------------------------+---------+-----------+---------------+2 rows in set (0.01 sec)
示例二:查看完整语句及会话所在节点
指定
FULL 关键字后,Info 字段不再截断,且在默认的 GLOBAL 模式下会额外返回 Endpoint 列,标识每个会话所在的节点地址,便于定位具体是哪个节点上的会话。tdsql > SHOW FULL PROCESSLIST;+----+-------+--------+------+----------------+------+---------+------+-----------------------+--------------------------------------------------------------------+---------+-----------+---------------+----------------+| Id | Tid | Mem | User | Host | db | Command | Time | State | Info | Time_ms | Rows_sent | Rows_examined | Endpoint |+----+-------+--------+------+----------------+------+---------+------+-----------------------+--------------------------------------------------------------------+---------+-----------+---------------+----------------+| 3 | 47234 | 245760 | root | 10.0.0.5:52344 | test | Query | 0 | executing | SELECT * FROM t1 WHERE id=1 | 12 | 0 | 0 | 10.0.0.11:3306 || 21 | 58231 | 262144 | root | 10.0.0.6:41022 | test | Query | 3 | Searching range cache | SELECT COUNT(*) FROM t2 WHERE create_time > NOW() - INTERVAL 1 DAY | 3200 | 0 | 0 | 10.0.0.12:3306 |+----+-------+--------+------+----------------+------+---------+------+-----------------------+--------------------------------------------------------------------+---------+-----------+---------------+----------------+2 rows in set (0.00 sec)
以上示例中,
Searching range cache 是 TDSQL Boundless 新增的分布式执行状态,表示会话正在查找 range cache,便于将该阶段的耗时从等待响应耗时中独立出来定位。示例三:仅查看当前连接节点的会话列表
指定
LOCAL 关键字后,只返回当前连接节点自身的会话,不会汇聚其他节点的会话,也不会返回 Endpoint 列。tdsql > SHOW LOCAL PROCESSLIST;+----+-------+--------+------+----------------+------+---------+------+-----------+-----------------------------+---------+-----------+---------------+| Id | Tid | Mem | User | Host | db | Command | Time | State | Info | Time_ms | Rows_sent | Rows_examined |+----+-------+--------+------+----------------+------+---------+------+-----------+-----------------------------+---------+-----------+---------------+| 3 | 47234 | 245760 | root | 10.0.0.5:52344 | test | Query | 0 | executing | SELECT * FROM t1 WHERE id=1 | 12 | 0 | 0 |+----+-------+--------+------+----------------+------+---------+------+-----------+-----------------------------+---------+-----------+---------------+1 row in set (0.00 sec)
参数说明
SHOW PROCESSLIST 支持的关键字:GLOBAL:(默认)汇聚展示集群内所有计算节点的会话。LOCAL:仅展示当前连接节点的会话。FULL:显示完整的 Info 字段内容,不做截断。在默认的 GLOBAL 模式下,指定 FULL 时还会额外返回 Endpoint 列。DETAIL:在返回结果中追加同步/异步 IO、Redo/Undo/Binlog 日志量、CPU 耗时、内存占用、锁等待等扩展统计列,便于精细化排查性能问题。不指定
FULL 或 DETAIL 时,Info 字段最长显示100个字符,超出部分会被截断。返回结果字段说明:
字段 | 说明 |
Id | 会话 ID。 |
Tid | 会话对应的操作系统线程 ID。 |
Mem | 会话当前占用的内存大小,单位为字节。 |
User | 执行该会话的用户名。 |
Host | 客户端连接来源的地址和端口。 |
db | 会话当前所在的数据库,未选择数据库时为 NULL。 |
Command | 会话当前执行的命令类型,例如 Query(正在执行语句)、Sleep(空闲等待)、Connect(复制连接)等。 |
Time | 会话处于当前状态的持续时间,单位为秒。 |
State | 会话当前所处的执行阶段,为空表示当前无执行阶段。 |
Info | 会话正在执行的语句文本,为空表示当前无执行语句。 |
Time_ms | 会话处于当前状态的持续时间,单位为毫秒。 |
Rows_sent | 该语句已返回的行数。 |
Rows_examined | 该语句已扫描的行数。 |
Endpoint | 会话所在节点的地址,仅在默认的 GLOBAL 模式下指定 FULL 时返回。 |
注意事项
执行
SHOW PROCESSLIST 需要具备 PROCESS 权限。不具备该权限的用户仅能查看自己创建的会话,无法查看其他用户的会话。若需要查看单个会话在数据字典缓存、执行计划等维度的详细信息,请参见 PROCESSLIST,通过查询
information_schema.PROCESSLIST 视图获取。该视图与 SHOW PROCESSLIST 的字段顺序不同,且仅返回当前连接节点的会话,不会跨节点汇聚。集群内各计算节点的系统变量
performance_schema_show_processlist 取值需保持一致,否则在 GLOBAL 模式下汇聚其他节点会话时可能因返回结果的列数不一致而被跳过,并返回警告信息。如需终止某个会话或其正在执行的语句,可以使用
KILL [CONNECTION | QUERY] 会话 ID 语句。