慢查询日志
是什么?
1、MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。
2、具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是运行10秒以上的语句。
3、由他来查看哪些SQL超出了我们的最大忍耐时间值,比如一条sql执行超过5秒钟,我们就算慢SQL,希望能收集超过5秒的sql,结合之前explain进行全面分析
如何使用慢查询日志?
默认情况下,MySQL数据库没有开启慢查询日志,需要我们手动来设置这个参数。
当然,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。慢查询日志支持将日志记录写入文件
查看是否开启及如何开启
查看慢查询日志功能是否开启
SHOW VARIABLES LIKE '%slow_query_log%';
日志的位置就是第二行的位置
开启功能
set global slow_query_log=1;
查看和设置阙值
查看
SHOW VARIABLES LIKE 'long_query_time%';
阙值默认是10秒, 意思就是查询时间大于10秒的才算慢查询SQL
设置
set long_query_time=1
测试
查询当前系统中有多少条慢查询记录
show global status like '%Slow_queries%';
日志分析工具MySQLdumpslow
查看MySQLdumpslow的帮助信息
mysqldumpslow --help
s: 是表示按照何种方式排序
c: 访问次数
l: 锁定时间
r: 返回记录
t: 查询时间
al:平均锁定时间
ar:平均返回记录数
at:平均查询时间
-t:即为返回前面多少条的数据;
-g:后边搭配一个正则匹配模式,大小写不敏感的;
应用示例
得到返回记录集最多的10个SQL
mysqldumpslow -s r -t 10 /var/lib/mysql/atguigu-slow.log
得到访问次数最多的10个SQL
mysqldumpslow -s c -t 10 /var/lib/mysql/atguigu-slow.log