怎样把坏的MySQL查询找到并杀死?

2014-11-24 17:16:25 · 作者: · 浏览: 1

有时,关系型相关数据库系统的复杂性会把你搞晕,不过幸运的是,使用MySQL工具来管理查询就就可以避免这些复杂性。 在本教程中,我将向你们展示 怎样去查找并杀掉任何非法的MySQL查询



为了浏览当前正在运行的查询,登陆到MySQL终端,然后运行‘show processlist’命令:


首先你应该查看'Time'项,这里记录了进程执行 "做其当做的事情" 操作的秒数。‘command’项处于‘Sleep’ 状态的进程表示其正在等待接受查询,因此,它并没有消耗任何资源。对于其他任何进程而言,‘Time’超过一定的秒数表明出现问题。


--------------------------------------分割线 --------------------------------------


--------------------------------------分割线 --------------------------------------


在上面的例子中,唯一运行的查询是我们的‘show processlist’命令。让我们来看看如果我们有一个写的很烂的查询是怎么样的:


啊哈!现在我们看到有一个查询运行了将近30秒。如果我们不想让它的进程继续运行,可以将它的'Id'传递给kill命令:


(注意 由于我们没有改变任何数据,MySQL总是报告0行被影响。)


明智的使用kill命令能够清除积压的查询。然而,要记住的是,那不是一种永久的方法 - 如果这些查询来自你的程序,你需要去重写它们,或者将继续看到相同的问题不断出现。


关于不同‘命令’的MySQL文档:


via: http://xmodulo.com/2014/07/find-kill-misbehaving-mysql-queries.html


译者:hunanchenxingyu 校对:wxy


本文由 LCTT 原创翻译,Linux中国 荣誉推出