默认情况下,MySQL数据库没有开启慢查询日志,需要我们手动来设置这个参数。
当然,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。慢查询日志支持将日志记录写入文件
查看是否开启及如何开启
SHOW VARIABLES LIKE '%slow_query_log%';
开启
set global slow_query_log=1;
那么开启了慢查询日志后,什么样的SQL才会记录到慢查询日志里面呢?
这个是由参数long_query_time控制,默认情况下long_query_time的值为10秒,
命令:
show variables like 'long_query_time%';
设置慢的阙值时间
set global long_query_log = 1;
为什么设置后看不出变化?
show global variables like 'long_query_time%';
慢查询日志所在目录:
查询当前系统中有多少条慢查询记录
show global status like '%Slow_queries%';
日志分析工具mysqldumpslow
在生产环境中,如果要手工分析日志,查找、分析SQL,显然是个体力活,MySQL提供了日志分析工具mysqldumpslow。
工作常用参考
得到返回记录集最多的10个SQL
mysqldumpslow -s r -t 10 /var/lib/mysql/localhostcentos-slow.log;
得到访问次数最多的10个SQL
mysqldumpslow -s c -t 10 /var/lib/mysql/localhostcentos-slow.log;
得到按照时间排序的前10条里面含有左连接的查询语句
mysqldumpslow -s t -t 10 -g "left join" /var/lib/mysql/localhostcentos-slow.log;
另外建议在使用这些命令时结合 | 和more 使用 ,否则有可能出现爆屏情况
mysqldumpslow -s r -t 10 /var/lib/mysql/localhostcentos-slow.log | more