全部产品
弹性计算 会员服务 网络 安全 移动云 数加·大数据分析及展现 数加·大数据应用 管理与监控 云通信 阿里云办公 培训与认证 智能硬件
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 更多
分布式关系型数据库 DRDS

SHOW PROCESSLIST 指令与 KILL 指令

更新时间:2017-12-11 21:28:15

功能版本说明

  1. 当 DRDS 版本号小于 5.1.28-1408022 时,DRDS 仅支持物理连接的 SHOW PROCESSLIST 与 KILL 功能,请参考老版本文档老版本 SHOW PROCESSLIST 指令与 KILL 指令
  2. 当 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'

有三种用法:

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

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

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

    DRDS 不支持 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. 终止当前库上所有通过 DRDS 执行的物理 SQL: KILL 'ALL'

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

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

    • 该 PROCESS 的 User 是 DRDS 在 MySQL/RDS 上所创建的用户名;
    • 该 PROCESS 正在执行查询,也即 COMMAND 为 Query。
本文导读目录