SHOW PROCESSLIST 指令与 KILL 指令
功能版本说明
- 当 DRDS 版本号小于 5.1.28-1408022 时,DRDS 仅支持物理连接的 SHOW PROCESSLIST 与 KILL 功能,请参考老版本文档老版本 SHOW PROCESSLIST 指令与 KILL 指令。
- 当 DRDS 版本号大于等于 5.1.28-1408022 时,DRDS 支持逻辑连接与物理连接的 SHOW PROCESSLIST 与 KILL 功能,请继续阅读此文档。
获取 DRDS 版本号,DRDS 自助升级的方法以及更多的版本介绍请参考版本说明文档。
SHOW PROCESSLIST 指令
DRDS 中,可以使用 SHOW PROCESSLIST
指令查看 DRDS 中的连接与正在执行的 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 in set (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 指令
DRDS 中,可以使用 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 不同,DRDS 返回的物理连接的 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 in set (0.01 sec)
KILL 指令
KILL 指令用于终止一个正在执行的 SQL。
DRDS 使用 DRDS 在 MySQL/RDS 上创建的用户名连接 MySQL/RDS,所以一般直接连接 MySQL/RDS 是没有权限对 DRDS 发起的请求进行 KILL 操作的。
如果需要终止一个 DRDS 上正在执行的 SQL,需要使用 MySQL 命令行、DMS 等工具连接 DRDS,在 DRDS 上执行 KILL 指令。
语法:
KILL PROCESS_ID | 'PHYSICAL_PROCESS_ID' | 'ALL'
有三种用法:
终止一个特定的逻辑 SQL:
KILL PROCESS_ID
PROCESS_ID 为
SHOW [FULL] PROCESSLIST
指令返回的 ID 列。DRDS 中,
KILL PROCESS_ID
指令会将此连接正在执行的逻辑 SQL 与物理 SQL 均终止掉,并断开此连接。DRDS 不支持
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)
终止当前库上所有通过 DRDS 执行的物理 SQL:
KILL 'ALL'
当底层 MySQL/RDS 因为一些 SQL 导致压力非常大的时候,可以使用
KILL 'ALL'
指令终止当前 DRDS 库上所有正在执行的物理 SQL。符合以下条件的物理 PROCESS 会被
KILL 'ALL'
指令终止:- 该 PROCESS 的 User 是 DRDS 在 MySQL/RDS 上所创建的用户名;
- 该 PROCESS 正在执行查询,也即 COMMAND 为 Query。
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
评论