当用户访问网站反应过慢时,我们通常会通过各种日志来查找慢的原因:nginx,php,mysql 对应的日志,那今天我们就来说一说mysql的慢日志。
第一步查看是否开启慢查询日志(我的已经开启了并提供了路径地址):
show variables like 'slow%';
接下来就是对日志进行分析了,看哪些sql语句过慢,找到之后再一一进行优化
第二步找到/data/mariadb/mysql-slow.log 并进行分析
mysqldumpslow -r -t 10 /root/mysql-slow.log;#查看top 10 运行最慢的
上图是提供的例子
用到这里的时候,我们就会对慢日志进行分析了,哪个sql慢,就能找到原因了。
第三步想要分析就要知道以下两点:
1)mysqldumpslow命令对应的参数有哪些 如何使用
mysqldumpslow是mysql自带的用来分析慢查询的工具
经常使用几个命令
-s ORDER what to sort by (al, at, ar, c, l, r, t), ‘at' is default
-t NUM just show the top n queries
-g PATTERN grep: only consider stmts that include this string
-r Reverse the sort order
-s,是order的顺序,主要有
c,t,l,r和ac,at,al,ar,分别是按照query次数,查询时间,lock的时间和返回的记录数来排序,前面加了a的代表平均数
-t,是top n的意思,即为返回前面多少条的数据
-g,后边可以写一个正则匹配模式,大小写不敏感的
2)返回的结果中,都有哪些信息,分别代表什么意思
主要功能是, 统计不同慢sql的
出现次数(Count),
执行最长时间(Time),
累计总耗费时间(Time),
等待锁的时间(Lock),
发送给客户端的行总数(Rows),
扫描的行总数(Rows),
用户以及sql语句本身(抽象了一下格式, 比如 limit 1, 20 用 limit N,N 表示).
以上就是我对mysql 慢日志的使用和了解,希望对您有帮助,欢迎补充。我是jaron,php程序员一枚。