6.5 慢查询日志
1. 是什么?
mysql的慢查询日志是mysql提供的一种日志记录,它用来记录mysql中响应时间超过阀值的语句,具体指运行时间超过lang_query_time值的SQL,则会被记录到慢查询日志中。 具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是运行10秒以上的语句。 由它来查看哪些SQL超过陪我们的最大忍耐时间值,比如一条sql的执行时间超过5秒钟,我们就会算SQL,希望能收集超过5秒的sql,结合explain进行全面的分析。
2.查看和开启
a.查看是否开启慢查询
show variables like '%slow_query_log%'
b.开启慢查询
set global slow_query_log=1
如果想永久生效,就必须修改配置文件my.cnf (其他系统变量也是如此) 修改my.cnf文件,[mysqld]下增加或修改参数 slow_query_log 和 slow_query_log_file后,然后重启MYSQL服务器。也就是将如下两行配置进入my.cnf文件
slow_query_log=1 slow_query_log_file=/var/lib/mysql/xxxx-show.log 关于慢查询的参数slow_query_log_file,它指定慢查询日志文件的存放路径,系统默认会给一个缺省的文件host_name-show.log(如果没有指定参数slow_query_file的话)
3. 查看设置的阀值
show VARIABLES LIKE 'long_query_time%';
4. 设置阀值
set global long_query_time=3;#设置为3秒,默认是10秒。 #设置后需要重新连接或打开一个新的回话才能看到修改的值。 show VARIABLES LIKE 'long_query_time%'; #不用重新连接的语句 show global variables like 'long_query_time'; #也可以在my.cnf参数里面修改。 #假如运行时间等于long_query_time的情况,并不会被记录下来,也就是说,在mysql源码里是大于long_query_time,而非大于等于。
5. 查询当前系统中有多少条慢查询记录
show globle status like 'slow_queries';
6. 配置模板
#mysqld下的配置 slow_query_log=1; slow_query_log_file=/var/lib/mysql/xxxx-slow.log; long_query_time=3; log_output=file;
7.日志分析工具mysqldumpslow
#得到返回记录集最多的10个SQL mysqldumpslow -s r -t 10 /var/lib/mysql/xxxx-slow.log #得到访问次数最多的10个SQL mysqldumpslow -s c -t 10 /var/lib/mysql/xxxx-slow.log #得到按照时间排序的前10条里面包含有左连接的擦查询语句 mysqldumpslow -s t -t 10 -g "left join" /var/lib/mysql/xxxx-slow.log #另外建议在使用这些命令的时候结合 | 和more 使用,否则可能出现爆屏情况 mysqldumpslow -s r -t 10 /var/lib/mysql/xxxx-slow.log | more
关注我的公众号,精彩内容不能错过
作者:程序员果果
出处:blog.itwolfed.com
欢迎关注公众号——《程序员果果》 ,分享SpringBoot、SpringCloud、Dubbo、Golang、Docker相关知识与技巧。
原创 Java 博客,点我看看?