一、功能
该表在原生 MySQL PROCESSLIST 的基础上扩展了 TIME_MS、ROWS_SENT、ROWS_EXAMINED、TID 等字段,提供更精细的会话运行时观测能力。
注意:说明:
二、字段说明
| 字段名 | 类型 | 描述 |
| ID | bigint unsigned | 会话连接 ID,对应 CONNECTION_ID() 返回值,可用作 KILL 语句的参数。 |
| USER | varchar(32) | 发起该会话的 MySQL 用户名。系统会话显示为 system user,未完成认证的会话显示为 unauthenticated user。 |
| HOST | varchar(261) | 发起该会话的客户端主机名或 IP 地址,格式为 host_name:port 或 ip:port。 |
| DB | varchar(64) | 该会话当前使用的默认数据库名。若未选择默认数据库,取值为 NULL。 |
| COMMAND | varchar(16) | 该会话正在执行的命令类型,常见取值包括 Sleep、Query、Connect、Binlog Dump、Killed 等。 |
| 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。用于在系统侧排查线程级问题。 |
| ENDPOINT | varchar(255) | 该会话所属计算节点的 SQL 地址(host:port)。在 SHOW FULL PROCESSLIST 全局模式下用于标识每条会话来源的计算节点。本地查询时显示当前节点地址。 |
三、示例
查询当前实例所有会话信息:
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: 0ROWS_EXAMINED: 0 TID: 268435659 ENDPOINT: 10.0.0.1:3306*************************** 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: 4ROWS_EXAMINED: 4 TID: 421765955 ENDPOINT: 10.0.0.2:33062 rows in set (0.01 sec)
查询执行时长超过10秒的会话:
SELECT ID, USER, HOST, DB, COMMAND, TIME, STATE, INFOFROM information_schema.PROCESSLISTWHERE COMMAND <> 'Sleep' AND TIME > 10ORDER BY TIME DESC;
根据 ID 终止指定会话:
KILL 2155297;