KILL [TIDB]

KILL TIDB 语句用于终止 TiDB 中的连接。

语法图

  1. KillStmt ::= KillOrKillTiDB ( 'CONNECTION' | 'QUERY' )? NUM
  2. KillOrKillTiDB ::= 'KILL' 'TIDB'?

示例

  1. SHOW PROCESSLIST;
  1. +------+------+-----------+------+---------+------+-------+------------------+
  2. | Id | User | Host | db | Command | Time | State | Info |
  3. +------+------+-----------+------+---------+------+-------+------------------+
  4. | 1 | root | 127.0.0.1 | test | Query | 0 | 2 | SHOW PROCESSLIST |
  5. | 2 | root | 127.0.0.1 | | Sleep | 4 | 2 | |
  6. +------+------+-----------+------+---------+------+-------+------------------+
  7. 2 rows in set (0.00 sec)
  1. KILL TIDB 2;
  1. Query OK, 0 rows affected (0.00 sec)

MySQL 兼容性

  • 按照设计,KILL 语句默认与 MySQL 不兼容。负载均衡器后面通常放有多个 TiDB 服务器,这种默认不兼容有助于防止在错误的 TiDB 服务器上终止连接。
  • 不要在配置文件里设置 compatible-kill-query = true除非你确定客户端将始终连接到同一个 TiDB 节点。这是因为当你在默认的 MySQL 客户端按下 ctrl+c 时,客户端会开启一个新连接,并在这个新连接中执行 KILL 语句。此时,如果客户端和 TiDB 中间有代理,新连接可能会被路由到其他的 TiDB 节点,从而错误地终止其他会话。
  • KILL TIDB 语句是 TiDB 的扩展语法,其功能与 MySQL 命令 KILL [CONNECTION|QUERY] 和 MySQL 命令行 ctrl+c 相同。在同一个 TiDB 节点上,你可以安全地使用 KILL TIDB 语句。

另请参阅