功能版本说明

  • PolarDB-X 1.0版本号小于 5.1.28-1408022 时,PolarDB-X 1.0仅支持物理连接的 SHOW PROCESSLIST 与 KILL 功能,请参考老版本文档老版本SHOW PROCESSLIST指令与KILL指令
  • PolarDB-X 1.0版本号大于等于 5.1.28-1408022 时,PolarDB-X 1.0支持逻辑连接与物理连接的 SHOW PROCESSLIST 与 KILL 功能,请参考本文。

获取PolarDB-X 1.0版本号,PolarDB-X 1.0自助升级的方法以及更多的版本介绍请参见实例版本概览

SHOW PROCESSLIST 指令

PolarDB-X 1.0中,可以使用 SHOW PROCESSLIST 指令查看PolarDB-X 1.0中的连接与正在执行的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指令

PolarDB-X 1.0中,可以使用 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。

PolarDB-X 1.0使用PolarDB-X 1.0在 MySQL/RDS 上创建的用户名连接 MySQL/RDS,所以一般直接连接 MySQL/RDS 是没有权限对PolarDB-X 1.0 发起的请求进行 KILL 操作的。

如果需要终止一个PolarDB-X 1.0上正在执行的 SQL,需要使用 MySQL 命令行、DMS 等工具连接PolarDB-X 1.0,在PolarDB-X 1.0上执行 KILL 指令。

语法:

KILL PROCESS_ID | 'PHYSICAL_PROCESS_ID' | 'ALL'

有三种用法:

  1. 终止一个特定的逻辑 SQL:KILL PROCESS_ID

    PROCESS_ID 为 SHOW [FULL] PROCESSLIST 指令返回的 ID 列。

    PolarDB-X 1.0中,KILL PROCESS_ID 指令会将此连接正在执行的逻辑 SQL 与物理 SQL 均终止掉,并断开此连接。

    PolarDB-X 1.0不支持 KILL QUERY 指令。

  2. 终止一个特定的物理 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)

  3. 终止当前库上所有通过PolarDB-X 1.0执行的物理 SQL:KILL 'ALL'

    当底层 MySQL/RDS 因为一些 SQL 导致压力非常大的时候,可以使用 KILL 'ALL' 指令终止当前PolarDB-X 1.0库上所有正在执行的物理 SQL。

    符合以下条件的物理 PROCESS 会被KILL 'ALL'指令终止:

    • 该 PROCESS 的 User 是PolarDB-X 1.0在 MySQL/RDS 上所创建的用户名;
    • 该 PROCESS 正在执行查询,也即 COMMAND 为 Query。