MySQL调优之-慢查询日志

Posted chenyichen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL调优之-慢查询日志相关的知识,希望对你有一定的参考价值。

慢查询日志

是什么?

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

以上是关于MySQL调优之-慢查询日志的主要内容,如果未能解决你的问题,请参考以下文章

干货实战-- sql调优之慢查询定位大法

MYSQL数据库性能调优之三:explain分析慢查询

性能调优之MYSQL高并发优化

MySQL调优--02---慢查询日志

Mysql调优之查看explain命令

MySQL调优之EXPLAIN关键字