MySQL kill

本文将介绍 MySQL 中的 kill 命令。

一、kill 命令

MySQL 中有两个 kill 命令,分别是:

  • kill query 线程ID:终止线程中正在执行的语句
  • kill [connection] 线程ID:终止线程中正在执行的语句,断开线程的连接

二、kill 命令的作用

如果执行某个查询的过程过长或被堵塞,可以通过 kill query 命令放弃查询。

三、kill 命令的做法

kill 并不会立刻停止线程,而是先将线程的状态标记为 “停止”,然后让线程 “执行停止的逻辑”。

进程并不能直接停止,因为有停止的逻辑需要执行,例如:

  • 事务中停止,需要回滚 undo log
  • 大查询回滚,需要将查询过程中生成的临时文件删除

四、客户端 Ctrl + C

在客户端中执行 Ctrl + C,实际上是 MySQL 客户端另外启动一个连接,发送 kill query 命令。

这是因为 MySQL 是停等协议,当线程执行的语句还没有返回时,继续发命令无效,因此需要另起一个连接

参考

  • MySQL 技术内幕
  • MySQL 实战 45 讲
  • MySQL 是怎样运行的:从根儿上理解 MySQL