mysql - `KILL QUERY`命令的目的是什么?

标签 mysql sql myisam

我是 MySQL 和 SQL 的初学者,我正在从 MySQL 和 MyISAM 网站学习这些技术。

我现在正在学习 KILL 命令,并学会了如何使用 KILL CONNECTION。但是当我从 MySQL 和 MyISAM 网站了解 KILL QUERY 时,他们只是提供了有关 KILL QUERY 的信息,它们终止了指定连接 id 正在执行的查询。

其他用户(不是我)执行 INSERTDELETE 查询,但是当我通过获取其他用户的连接 ID 使用 KILL QUERY 时通过 SHOW PROCESSLIST 命令,它说

Query OK, 0 rows affected (0.01 sec)

但其他用户没有任何反应。

我只是想知道这个命令的具体用途是什么。这个KILL QUERY命令的目的是什么?谁能告诉我吗?

最佳答案

一些有用的提示:

How can I stop a running MySQL query?

MySQL Kill query

How to kill all processes for a Specific user

MySQL Manaul - Kill

您需要在这里弄清楚 KILL 将终止连接,但 KILL QUERY 只会终止该查询并保持该连接完好无损。

确实,如果您在另一个用户命令上使用 KILL QUERY,只有当他们的查询运行时间比您的 Kill Query 命令更长时,这一点才会真正引人注目,所以如果它是一个缓慢的查询,因为[大多数]查询将在不到一秒的时间内执行并关闭,所以当您KILL编辑其他用户查询时,他们的查询很可能已经完成并且无论如何都关闭了。

我怀疑这就是您所看到的,您正在尝试终止一个在 kill 命令执行之前关闭并完成的查询。

终止查询似乎(根据文献)仅对缓慢且长时间运行的查询有用,从上面的内容中应该可以看出为什么会这样。


编辑:
(我已经准备好将其发布在我原来的答案中,然后将其视为无关紧要而删除,但由于评论,现在似乎更相关!)

来自MySQL Manual :

Note

You cannot use KILL with the Embedded MySQL Server library because the embedded server merely runs inside the threads of the host application. It does not create any connection threads of its own.

因此,为了回答您在评论中的问题,我认为您可能正在运行嵌入式 MySQL,因此您的终止调用将无法运行。

关于mysql - `KILL QUERY`命令的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43876920/

相关文章:

mysql - ~200 万行 MySQL MyISAM 表上的 150ms

php - 如何将表ID传递给PHP中的另一个表

php - 循环遍历多种表单

sql - 如何在给定开始和结束时间的情况下找到可用的 worker ?

mysql - 在MySQL中更改表类型

mysql - 如何将巨大的MyISAM表分块导出到InnoDB?

mysql - 在新的 MySQL 安装中使用以前的 MySQL 数据文件夹

python - Django 使用字符串来过滤模型以避免重复

java - 使用嵌套 SQL 查询设置多个 CallableStatement 变量

asp.net - 过程或函数 ""需要未提供的参数 ""