在进行SQL优化的时候,慢日志分析是一个很好的方法,它可以自动把超过设定阈值的SQL语句保存在日志中,MySQL开启慢日志分析的方法如下。
输入:show VARIABLES like ‘%slow_query_log%’
如果显示slow_query_log:OFF则未开启(我已经开启了,显示ON)
第二行数据表示日志位置
输入: set global slow_query_log=1;
开启慢日志分析。
输入:show VARIABLES like ‘long_query_time%’;
查看当前设置的阈值,默认10秒。
设置阈值:
set global long_query_time=3;
需要重新连接或则新开一个会话才能看到修改值。
然后就可以去日志里面查看超时SQL啦。
日志分析工具
使用mysqldumptslow可以方便查看日志信息
参数如下:
-s:表示如何排序
c:访问次数
i:锁定时间
r:返回记录
t:查询时间
al:平均锁定时间
ar:平均返回记录数
at:平均查询时间
-t:返回前多少条数据
-g:后面可以搭配正则表达式,大小写不敏感。
比如:
得到返回记录最多的20个sql
mysqldumpslow -s r -t 20 DESKTOP-PR0TQMD-slow.log
得到平均访问次数最多的20条sql
mysqldumpslow -s ar -t 20 DESKTOP-PR0TQMD-slow.log