我是MySQL和SQL的初学者,我正在从MySQL和MyISAM网站学习这些技术。
我现在正在学习KILL
命令,并学会了如何使用KILL CONNECTION
。但是当我从MySQL和MyISAM网站学习KILL QUERY
时,他们只是提供了有关KILL QUERY
的信息,他们终止查询指定的连接ID正在执行。
其他用户(不是我)执行INSERT
和DELETE
查询但是当我通过KILL QUERY
命令获取其他用户的连接ID时使用SHOW PROCESSLIST
时,它说
查询OK,0行受影响(0.01秒)
但其他用户没有任何反应。
我只是想知道这个命令的确切用法是什么。这个KILL QUERY
命令的目的是什么。有谁能告诉我?
答案 0 :(得分:2)
一些有用的指示:
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:
请注意
您不能将KILL与嵌入式MySQL服务器库一起使用,因为嵌入式服务器仅在主机应用程序的线程内运行。它不会创建自己的任何连接线程。
因此,为了在评论中回答您的问题,我认为您可能正在运行MySQL嵌入式,因此您的kill调用将无法运行。