网站开发人员在执行服务器MySQL查询时经常会遇到性能下降的问题。同时,测试请求执行得非常快。原因可能是查询未优化或缺少索引。
您可以激活日志记录并分析慢速查询。在慢速MySQL查询的日志中有大量行,因此读取该文件将成问题。mysqldumpslow实用程序将为您提供帮助。
启用日志的my.cnf配置示例。记录了运行时间超过五秒并且没有索引的JOIN查询。
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 5
log_queries_not_using_indexes = 1
日志文件/var/log/mysql/slow.log必须手动创建:
mkdir /var/log/mysql
touch /var/log/mysql/slow.log
chown mysql.mysql -R /var/log/mysql
mysqldumpslow实用程序允许您分析慢速数据库查询的日志。
基本应用:
#显示10个最慢的查询。 按平均查询时间排序。
mysqldumpslow -s at -t 10
#有时您需要指定特定的日志,日志名称为xxxx-slow.log,其中xxxx通常是主机名。
mysqldumpslow -s at -t 10 /var/log/mysql/slow.log
Count: 2 Time=68.34s (136s) Lock=0.00s (0s) Rows=39892974.5 (79785949), root[root]@localhost
SELECT PL.pl_title, P.page_title
FROM page P
INNER JOIN pagelinks PL
ON PL.pl_namespace = P.page_namespace
WHERE P.page_namespace = N
标题的解码:
Count-日志中请求的出现次数;
时间 -平均和总请求时间;
锁定 -表锁定时间;
行数-选定的行数
