我是 MySQL 和 SQL 的初学者,我正在从 MySQL 和 MyISAM 网站学习这些技术。
我现在正在学习 KILL
命令,并学会了如何使用 KILL CONNECTION
。但是当我从 MySQL 和 MyISAM 网站了解 KILL QUERY
时,他们只是提供了有关 KILL QUERY
的信息,它们终止了指定连接 id 正在执行的查询。
其他用户(不是我)执行 INSERT
和 DELETE
查询,但是当我通过获取其他用户的连接 ID 使用 KILL QUERY
时通过 SHOW PROCESSLIST
命令,它说
Query OK, 0 rows affected (0.01 sec)
但其他用户没有任何反应。
我只是想知道这个命令的具体用途是什么。这个KILL QUERY
命令的目的是什么?谁能告诉我吗?
最佳答案
一些有用的提示:
How can I stop a running MySQL query?
How to kill all processes for a Specific user
您需要在这里弄清楚 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/