如何查看哪些查询运行缓慢

如何查看哪些查询运行缓慢

我正在运行 Ubuntu 12.04.2 LTS(GNU/Linux 3.2.0-24-virtual x86_64)和 Percona 的 mysql 服务器。

我知道我的查询很慢,但我不确定在哪里可以找到它们,以便我可以尝试补救它们。

有人能帮我找到日志在哪里吗?我是否能分辨出有问题的查询是什么?

谢谢

答案1

我将首先启用 mysql_long_queries,然后检查日志输出。

在 my.cnf 下的 [mysqld]

long_query_time         = 1
log-slow-queries        = /var/log/mysql/mysql_slow.log

然后从那里出发。

您还可以使用:

show processlist
show full processlist

查看当前正在运行哪些查询。

答案2

我们的朋友 rfelsburg 说的一切都是正确的,你应该这样做。但是,我必须补充一点,并不是你在慢查询日志中看到的所有查询都真的运行缓慢。你需要注意,有些查询正在队列中等待执行。但是,由于还有其他慢查询正在运行,它们在慢查询日志中显示为超过 long_query_time 值的查询,你认为它们运行缓慢。

让服务器运行一段时间并收集一些慢查询后,您需要使用 slowquerydump更多信息请点击此处这将为您生成一个格式良好的文件,这样您就可以找到查询、运行的次数、表锁定时间......并逐个运行它们,看看它们是否真的运行缓慢或在队列中停留的时间太长而无法执行。

如果您有任何疑问,请告诉我。

相关内容