您现在的位置是:首页 > 技术博客 > mysql慢日志的那些事儿

mysql慢日志的那些事儿

2021-08-06文远技术博客561468

什么是mysql慢日志?

MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具 体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为 10,意思是运行10S以上的语句。默认情况下,Mysql数据库并不启动慢查询日志,需要我们手动来设置这 个参数,当然,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一 定的性能影响。慢查询日志支持将日志记录写入文件,也支持将日志记录写入数据库表。


一、相关配置项介绍

mysql> show variables like "%slow_query_log%";

mysql慢日志的那些事儿

slow_query_log:是否开启慢日志,ON是开启,OFF是关闭

slow_query_log_file:慢日志文件的路径


mysql> show variables like "%long_query_time%";



long_query_time:慢日志触发的时间,1.000就是SQL语句运行时间超过1.000就会被记录到慢日志文件


二、修改相关配置

#开启慢日志查询
mysql> set global slow_query_log = 1;

#设置慢日志时间
mysql> set global long_query_time = 1;

注意,如果修改之后发现没有变化,退出mysql重新登录就可以了。mysql慢日志也可以存储在表里面,但是这样消耗mysql性能,不建议这么做,所以本文不介绍这种方式


三、手动生成慢日志进行测试

mysql> select sleep(5);
mysql> select sleep(4);
mysql> select sleep(3);
mysql> select sleep(2);
mysql> select sleep(1);
mysql> select sleep(0.5);


可以多测试几个,然后查看慢日志文件


[root@VM-0-15-centos bin]# vim /usr/local/mysql/sql_log/slowlog.log


注意,vim后面是我的慢日志路径,实际要根据自己的进行查看

慢日志内容如下

mysql慢日志的那些事儿

标红的地方,就是查询比较慢需要我们手动优化的SQL语句,注意,select sleep(0.5)不满足条件,所以没有出现在慢查询日志里面


四、使用工具更加方便分析

windows下好像没有,linux下安装mysql会自带一款分析工具mysqldumpslow,一般在mysql安装目录下的bin目录下


下面介绍mysqldumpslow命令的一些参数

-s, 是表示按照何种方式排序:

        c: 访问计数

        l: 锁定时间

        r: 返回记录

        t: 查询时间

        al:平均锁定时间

        ar:平均返回记录数

        at:平均查询时间

-t, 是top n的意思,即为返回前面多少条的数据;

-g, 后边可以写一个正则匹配模式,大小写不敏感的;

比如:

得到返回记录集最多的10个SQL。
mysqldumpslow -s r -t 10 /usr/local/mysql/sql_log/slowlog.log

得到访问次数最多的10个SQL
mysqldumpslow -s c -t 10 /usr/local/mysql/sql_log/slowlog.log

得到按照时间排序的前10条里面含有左连接的查询语句。
mysqldumpslow -s t -t 10 -g “left join” /usr/local/mysql/sql_log/slowlog.log

另外建议在使用这些命令时结合 | 和more 使用 ,否则有可能出现刷屏的情况。



到这里,就是mysql慢日志的所有内容了

文章评论

看完文章了吗?谁便说点吧

发表 captcha

暂无评论