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%";
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后面是我的慢日志路径,实际要根据自己的进行查看
慢日志内容如下
标红的地方,就是查询比较慢需要我们手动优化的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慢日志的所有内容了
相关文章
上一篇mysql的执行流程
文章评论
看完文章了吗?谁便说点吧
暂无评论