我是MySQL和SQL的初学者,我正在从MySQL和MyISAM网站上学习这些技术。
我现在正在学习KILL命令,并且已经学习了如何使用KILL CONNECTION。但是,当我从MySQL和MyISAM网站了解到KILL QUERY时,它们只是提供了有关KILL QUERY的信息,从而终止了指定的连接id正在执行的查询。
其他用户(不是我)执行INSERT和DELETE查询,但是当我通过SHOW PROCESSLIST命令获取其他用户的连接id时,它说
查询确定,0行受影响(0.01秒)
但其他用户没有发生任何事情。
我只想知道这个命令的确切用途是什么。这个KILL QUERY命令的目的是什么。有人能告诉我吗?
发布于 2017-05-09 18:17:57
一些有用的提示:
在这里您需要弄清楚,KILL会关闭连接,但是KILL QUERY只会关闭该查询,并将保持该连接的完整性。
实际上,如果您在另一个用户命令上使用KILL QUERY,那么只有当他们的查询运行时间比Kill query命令的时间更长时才能注意到这一点,所以如果这是一个缓慢的查询,因为大多数查询将在一秒钟内执行和关闭,所以当您KILL编辑了其他用户查询时,他们的查询可能已经完成并关闭了。
我怀疑这就是您所看到的,您正在试图杀死一个查询,该查询将关闭并在杀死命令执行之前完成。
从文献来看,删除查询只对缓慢和长时间运行的查询有用,从上面可以看出这一点的原因。
编辑:
(我已经准备好在我最初的答案上贴上这篇文章,然后把它说成无关紧要,但由于评论,现在似乎更有意义了!)
来自MySQL手册
备注 不能在嵌入式MySQL服务器库中使用KILL,因为嵌入式服务器只是在主机应用程序的线程中运行。它不创建自己的任何连接线程。
因此,为了在评论中回答您的问题,我认为您可能正在运行MySQL embedded,因此您的calls调用将无法运行。
https://stackoverflow.com/questions/43876920
复制相似问题