PingKai Logo下载

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: NULL

PROCESSLIST 表各列的含义如下:

  • 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       |
+-----------------+------------+------+-----------------+------+---------+------+------------+------------------------------------------------------+------------------------------------------------------------------+------+------+----------------------------------------+----------------+---------------+---------------+----------+----------+------------+