功能版本说明
- 当PolarDB-X版本号小于 5.1.28-1408022 时,PolarDB-X仅支持物理连接的 SHOW PROCESSLIST 与 KILL 功能,详情请参见老版本SHOW PROCESSLIST指令与KILL指令。
- 当PolarDB-X版本号大于或等于 5.1.28-1408022 时,PolarDB-X支持逻辑连接与物理连接的 SHOW PROCESSLIST 与 KILL 功能,请参见本文档。
关于如何获取PolarDB-X版本号,PolarDB-X自助升级的方法以及更多的版本介绍请参见版本说明文档。
SHOW PROCESSLIST 指令
PolarDB-X中,可以使用 SHOW PROCESSLIST
指令查看PolarDB-X中的连接与正在执行的 SQL 等信息。
语法
- SHOW [FULL] PROCESSLIST
示例
- mysql> SHOW PROCESSLIST\G
- ID:1971050
- USER: admin
- HOST:111.111.111.111:4303
- DB: drds_test
- COMMAND:Query
- TIME:0
- STATE:
- INFO: show processlist
- 1 row inset(0.01 sec)
结果集各字段含义:
- ID:连接的 ID,为一个 Long 型数字。
- USER:建立此连接所使用的用户名。
- HOST:建立此连接的机器的 IP 与端口。
- DB:此连接所访问的库名。
- COMMAND,目前有两种取值:
- Query,代表当前连接正在执行 SQL 语句;
- Sleep,代表当前连接正处于空闲状态。
- TIME, 连接处于当前状态持续的时间:
- 当 COMMAND 为 Query 时,代表当此连接上正在执行的 SQL 已经执行的时间;
- 当 COMMAND 为 Sleep 时,代表当此连接空闲的时间。
- STATE:目前无意义,恒为空值。
- INFO:
- 当 COMMAND 为 Query 时,为此连接上正在执行的 SQL 的内容。当不带 FULL 参数时,最多返回正在执行的 SQL 的前 30 个字符。当带 FULL 参数时,最多返回正在执行的 SQL 的前1000个字符;
- 当 COMMAND 为其他值时,无意义,为空值。
SHOW PHYSICAL_PROCESSLIST 指令
PolarDB-X中,可以使用 SHOW PHYSICAL_PROCESSLIST
指令查看底层所有 MySQL/RDS 上正在执行的 SQL 信息。
语法
- SHOW [FULL] PHYSICAL_PROCESSLIST
当 SQL 比较长的时候,SHOW PHYSICAL_PROCESSLIST
会截断,这时可以使用 SHOW FULL PHYSICAL_PROCESSLIST
获取完整 SQL。
返回结果中每一列的含义与 MySQL 的 SHOW PROCESSLIST
指令等价,请参见SHOW PROCESSLIST Syntax。
与 MySQL 不同,PolarDB-X返回的物理连接的 ID 列为一个字符串,并非一个数字。
示例
- mysql> SHOW PHYSICAL_PROCESSLIST\G
- ***************************1. row ***************************
- ID:0-0-521414
- USER: tddl5
- DB: tddl5_00
- COMMAND:Query
- TIME:0
- STATE: init
- INFO: show processlist
- ***************************2. row ***************************
- ID:0-0-521570
- USER: tddl5
- DB: tddl5_00
- COMMAND:Query
- TIME:0
- STATE:User sleep
- INFO:/*DRDS /88.88.88.88/b67a0e4d8800000/ */select sleep(1000)
- 2 rows inset(0.01 sec)
KILL指令
KILL指令用于终止一个正在执行的SQL。
PolarDB-X使用PolarDB-X在RDS MySQL创建的用户名连接RDS MySQL,所以一般直接连接RDS MySQL是没有权限对PolarDB-X发起的请求进行KILL操作的。
如果需要终止一个PolarDB-X上正在执行的SQL,需要使用MySQL命令行、DMS等工具连接PolarDB-X,在PolarDB-X上执行KILL指令。
语法
- KILL PROCESS_ID |'PHYSICAL_PROCESS_ID'|'ALL'
有如下三种用法:
- 终止一个特定的逻辑SQL:
KILL PROCESS_ID
PROCESS_ID 为SHOW [FULL] PROCESSLIST
指令返回的ID列。
PolarDB-X中,KILL PROCESS_ID
指令会将此连接正在执行的逻辑SQL与物理SQL 均终止掉,并断开此连接。
PolarDB-X不支持KILL QUERY
指令。 - 终止一个特定的物理 SQL:
KILL 'PHYSICAL_PROCESS_ID'
其中的 PHYSICAL_PROCESS_ID 来自SHOW PHYSICAL_PROCESS_ID
指令返回的 ID 列。
由于
PHYSICAL_PROCESS_ID
列为一个字符串,并非一个数字,因此KILL指令中,PHYSICAL_PROCESS_ID
需要使用单引号括起来。**
- 示例:
- mysql> KILL '0-0-521570';
- Query OK,0 rows affected (0.01 sec)
- 终止当前库上所有通过PolarDB-X执行的物理 SQL:
KILL 'ALL'
当底层RDS MySQL因为一些 SQL 导致压力非常大的时候,可以使用KILL 'ALL'
指令终止当前PolarDB-X库上所有正在执行的物理 SQL。符合以下条件的物理 PROCESS 会被KILL 'ALL'
指令终止:
- 该 PROCESS 的 User 是PolarDB-X在RDS MySQL上所创建的用户名;
- 该 PROCESS 正在执行查询,也即 COMMAND 为 Query。