13.7.6.4 KILL 声明

KILL [CONNECTION | QUERY] processlist_id

mysqld的每个连接均在单独的线程中运行。您可以使用KILL processlist_id语句终止线程。

线程进程列 table 标识符可以从INFORMATION_SCHEMA PROCESSLISTtable 的ID列,SHOW PROCESSLIST输出的Id列和 Performance Schema threadstable 的PROCESSLIST_ID列中确定。当前线程的值由CONNECTION_ID()函数返回。

KILL允许使用可选的CONNECTIONQUERY修饰符:

查看哪些线程可被杀死的能力取决于PROCESS特权:

杀死线程和语句的能力取决于SUPER特权:

您还可以使用mysqladmin processlistmysqladmin kill命令检查并杀死线程。

Note

不能将KILL与嵌入式 MySQL 服务器库一起使用,因为嵌入式服务器仅在主机应用程序的线程内运行。它不会自己创建任何连接线程。

当您使用KILL时,将为该线程设置特定于线程的 kill 标志。在大多数情况下,线程死亡可能需要一些时间,因为仅在特定时间间隔检查 kill 标志:

KILL语句返回而无需 await 确认,但是 kill 标志检查会在相当短的时间内中止操作。中止该操作以执行任何必要的清理也需要一些时间。

Warning

杀死MyISAMtable 上的REPAIR TABLEOPTIMIZE TABLE操作会导致 table 已损坏且无法使用。在对该 table 进行的任何读取或写入操作都将失败,直到您再次对其进行优化或修复(不间断)。

首页