MySQL / MariaDB-使用mysqldumpslow查看和分析慢查询

网站开发人员在执行服务器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-日志中请求的出现次数;
时间 -平均和总请求时间;
锁定 -表锁定时间;
行数-选定的行数

发表评论