#### 13.7.8.4 KILL 语句

[](<>)[](<>)

```
KILL [CONNECTION | QUERY] processlist_id
```

每个连接到[**mysqld**](mysqld.html)在单独的线程中运行。你可以杀死一个线程`杀死 *`processlist_id`*`陈述。

线程进程列表标识符可以从`ID`的列`INFORMATION_SCHEMA` [`进程列表`](information-schema-processlist-table.html)表`Id`列[`显示进程列表`](show-processlist.html)输出，并且`PROCESSLIST_ID`性能模式的列[`线程`](performance-schema-threads-table.html)桌子。当前线程的值由[`CONNECTION_ID()`](information-functions.html#function_connection-id)功能。

[`杀`](kill.html)允许一个可选的`联系`要么`询问`修饰符：

-   [`终止连接`](kill.html)是相同的[`杀`](kill.html)没有修饰符：它终止与给定关联的连接*`processlist_id`*，在终止任何语句后，连接正在执行。

-   [`终止查询`](kill.html)终止连接当前正在执行的语句，但保持连接本身不变。

    查看哪些线程可以被杀死的能力取决于[`过程`](privileges-provided.html#priv_process)特权：

-   没有[`过程`](privileges-provided.html#priv_process)，您只能看到自己的线程。

-   和[`过程`](privileges-provided.html#priv_process)，您可以看到所有线程。

    杀死线程和语句的能力取决于[`CONNECTION_ADMIN`](privileges-provided.html#priv_connection-admin)特权和已弃用[`极好的`](privileges-provided.html#priv_super)特权：

-   没有[`CONNECTION_ADMIN`](privileges-provided.html#priv_connection-admin)要么[`极好的`](privileges-provided.html#priv_super)，你只能杀死你自己的线程和语句。

-   和[`CONNECTION_ADMIN`](privileges-provided.html#priv_connection-admin)要么[`极好的`](privileges-provided.html#priv_super)，您可以杀死所有线程和语句，除了影响正在执行的线程或语句[`SYSTEM_USER`](privileges-provided.html#priv_system-user)特权，您自己的会话必须另外具有[`SYSTEM_USER`](privileges-provided.html#priv_system-user)特权。

    您还可以使用[**mysqladmin 进程列表**](mysqladmin.html)和[**mysqladmin 杀**](mysqladmin.html)检查和杀死线程的命令。

    当你使用[`杀`](kill.html)，为线程设置一个线程特定的终止标志。在大多数情况下，线程可能需要一些时间才能终止，因为仅在特定时间间隔检查 kill 标志：

-   期间[`选择`](select.html)操作，对于`订购方式`和`通过...分组`循环，在读取行块后检查标志。如果设置了 kill 标志，则该语句被中止。

-   [`更改表`](alter-table.html)生成表副本的操作会定期检查从原始表中读取的每几行复制行的终止标志。如果设置了 kill 标志，则中止语句并删除临时表。

    这[`杀`](kill.html)语句在不等待确认的情况下返回，但 kill 标志检查会在相当短的时间内中止操作。中止操作以执行任何必要的清理也需要一些时间。

-   期间[`更新`](update.html)要么[`删除`](delete.html)操作中，在每个块读取之后以及每个更新或删除的行之后都会检查 kill 标志。如果设置了 kill 标志，则该语句被中止。如果您不使用事务，则不会回滚更改。

-   [`GET_LOCK()`](locking-functions.html#function_get-lock)中止并返回`空值`.

-   如果线程在表锁处理程序中（状态：`锁定`)，表锁很快被中止。

-   如果线程正在等待写入调用中的可用磁盘空间，则写入将中止并显示“磁盘已满”错误消息。

-   [`解释分析`](explain.html#explain-analyze)中止并打印第一行输出。这适用于 MySQL 8.0.20 及更高版本。

警告

杀死一个[`维修台`](repair-table.html)要么[`优化表`](optimize-table.html)在一个操作`MyISAM`table 导致表损坏且无法使用。对此类表的任何读取或写入都会失败，直到您再次优化或修复它（不中断）。
