PROCESSLIST
PROCESSLIST 和 SHOW PROCESSLIST 的功能一样,都是查看当前正在处理的请求。
PROCESSLIST 表比 SHOW PROCESSLIST 的结果多出下面几列:
DIGEST列:显示 SQL 语句的 digest。MEM列:显示正在处理的请求已使用的内存,单位是 byte。DISK列:显示磁盘空间使用情况,单位是 byte。TxnStart列:显示事务的开始时间。RESOURCE_GROUP列:显示对应的资源组名称。SESSION_ALIAS列:显示当前连接的别名。ROWS_AFFECTED列:显示语句当前影响的行数。TIDB_CPU列:显示语句当前占用 TiDB 服务器 CPU 的时间,单位是纳秒。该列仅在开启 Top SQL 特性时显示实际值,否则始终显示为0。TIKV_CPU列:显示语句当前占用 TiKV 服务器 CPU 的时间,单位是纳秒。PROXY_HOST列:显示使用 PROXY 协议的连接中,直接连接 TiDB 的代理地址。
USE information_schema;
DESC processlist;+----------------+---------------------+------+------+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+---------------------+------+------+---------+-------+
| ID | bigint(21) unsigned | NO | | 0 | |
| USER | varchar(16) | NO | | | |
| HOST | varchar(64) | NO | | | |
| DB | varchar(64) | YES | | NULL | |
| COMMAND | varchar(16) | NO | | | |
| TIME | int(7) | NO | | 0 | |
| STATE | varchar(7) | YES | | NULL | |
| INFO | longtext | YES | | NULL | |
| DIGEST | varchar(64) | YES | | | |
| MEM | bigint(21) unsigned | YES | | NULL | |
| DISK | bigint(21) unsigned | YES | | NULL | |
| TxnStart | varchar(64) | NO | | | |
| RESOURCE_GROUP | varchar(32) | NO | | | |
| SESSION_ALIAS | varchar(64) | NO | | | |
| ROWS_AFFECTED | bigint(21) unsigned | YES | | NULL | |
| TIDB_CPU | bigint(21) | NO | | 0 | |
| TIKV_CPU | bigint(21) | NO | | 0 | |
| PROXY_HOST | varchar(64) | YES | | NULL | |
+----------------+---------------------+------+------+---------+-------+SELECT * FROM information_schema.processlist\G*************************** 1. row ***************************
ID: 1268776964
USER: root
HOST: 127.0.0.1:59922
DB: NULL
COMMAND: Query
TIME: 0
STATE: autocommit
INFO: SELECT * FROM information_schema.processlist
DIGEST: 4b5e7cdd5d3ed84d6c1a6d56403a3d512554b534313caf296268abdec1c9ea99
MEM: 0
DISK: 0
TxnStart:
RESOURCE_GROUP: default
SESSION_ALIAS:
ROWS_AFFECTED: 0
TIDB_CPU: 0
TIKV_CPU: 0
PROXY_HOST: NULLPROCESSLIST 表各列的含义如下:
ID列:客户连接 ID。USER列:执行当前 PROCESS 的用户名。HOST列:客户连接的地址。使用 PROXY 协议时,显示协议透传的客户端地址;未使用 PROXY 协议时,显示直接连接 TiDB 的对端地址。DB列:当前连接的默认数据库名。COMMAND列:当前 PROCESS 执行的命令类型。TIME列:当前 PROCESS 的已经执行的时间,单位是秒。STATE列:当前连接的状态。INFO列:正在处理的请求语句。DIGEST列:SQL 语句的 digest。MEM列:正在处理的请求已使用的内存,单位是 byte。DISK列:磁盘空间使用情况,单位是 byte。TxnStart列:显示事务的开始时间。RESOURCE_GROUP列:显示对应的资源组名称。SESSION_ALIAS列:显示当前连接的别名。ROWS_AFFECTED列:显示语句当前影响的行数。TIDB_CPU列:显示语句当前占用 TiDB 服务器 CPU 的时间,单位是纳秒。该列仅在开启 Top SQL 特性时显示实际值,否则始终显示为0。TIKV_CPU列:显示语句当前占用 TiKV 服务器 CPU 的时间,单位是纳秒。PROXY_HOST列:使用 PROXY 协议时,显示与 TiDB 实际建立 TCP 连接的代理地址,包含 IP 地址和端口。未使用 PROXY 协议时,该列为NULL,包括启用回退模式后未发送 PROXY 协议头的直连连接。
同时查看客户端地址和代理地址
通过 F5、HAProxy 等负载均衡设备连接 TiDB 并使用 PROXY 协议时,可以同时查询 HOST 和 PROXY_HOST,区分应用客户端地址与直接连接 TiDB 的代理地址。这有助于排查执行缓慢的 SQL 或异常连接是否集中经过同一个代理节点。
例如,查看当前连接的两个地址:
SELECT ID, HOST, PROXY_HOST
FROM information_schema.processlist
WHERE ID = CONNECTION_ID();以下为使用 PROXY 协议的示例结果:
+------------+-------------------+----------------+
| ID | HOST | PROXY_HOST |
+------------+-------------------+----------------+
| 1268776964 | 192.168.1.2:60055 | 10.0.0.1:52341 |
+------------+-------------------+----------------+其中,192.168.1.2:60055 是 PROXY 协议透传的客户端地址,10.0.0.1:52341 是代理与 TiDB 建立 TCP 连接时的源地址和端口。
PROXY_HOST 仅展示直接连接 TiDB 的对端地址,不包含完整代理链路或 F5 设备名称等元数据。SHOW PROCESSLIST 和 SHOW FULL PROCESSLIST 的输出保持不变,不包含 PROXY_HOST 列。
CLUSTER_PROCESSLIST
CLUSTER_PROCESSLIST 是 PROCESSLIST 对应的集群系统表,用于查询集群中所有 TiDB 节点的 PROCESSLIST 信息。CLUSTER_PROCESSLIST 表结构上比 PROCESSLIST 多一列 INSTANCE,表示该行数据来自的 TiDB 节点地址。
CLUSTER_PROCESSLIST 同样包含 PROXY_HOST 列,含义与 PROCESSLIST 中的相同。例如,查询整个集群中使用 PROXY 协议的连接及其正在执行的 SQL:
SELECT INSTANCE, ID, USER, HOST, PROXY_HOST, TIME, INFO
FROM information_schema.cluster_processlist
WHERE PROXY_HOST IS NOT NULL;SELECT * FROM information_schema.cluster_processlist;+-----------------+------------+------+-----------------+------+---------+------+------------+------------------------------------------------------+------------------------------------------------------------------+------+------+----------------------------------------+----------------+---------------+---------------+----------+----------+------------+
| INSTANCE | ID | USER | HOST | DB | COMMAND | TIME | STATE | INFO | DIGEST | MEM | DISK | TxnStart | RESOURCE_GROUP | SESSION_ALIAS | ROWS_AFFECTED | TIDB_CPU | TIKV_CPU | PROXY_HOST |
+-----------------+------------+------+-----------------+------+---------+------+------------+------------------------------------------------------+------------------------------------------------------------------+------+------+----------------------------------------+----------------+---------------+---------------+----------+----------+------------+
| 127.0.0.1:10080 | 1268776964 | root | 127.0.0.1:59922 | NULL | Query | 0 | autocommit | SELECT * FROM information_schema.cluster_processlist | b1e38e59fbbc3e2b35546db5c8053040db989a497ac6cd71ff8dd4394395701a | 0 | 0 | 07-29 12:39:24.282(451471727468740609) | default | | 0 | 0 | 0 | NULL |
+-----------------+------------+------+-----------------+------+---------+------+------------+------------------------------------------------------+------------------------------------------------------------------+------+------+----------------------------------------+----------------+---------------+---------------+----------+----------+------------+