我正在运行 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更多信息请点击此处这将为您生成一个格式良好的文件,这样您就可以找到查询、运行的次数、表锁定时间......并逐个运行它们,看看它们是否真的运行缓慢或在队列中停留的时间太长而无法执行。
如果您有任何疑问,请告诉我。