默认情况下,MYSQL数据库没有开启慢查询日志,需要我们手动来设置这个参数
当前,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会对性能造成一定的影响,慢查询日志支持将日志记录到文件中
查看是否开启:
show variables like '%slow_query_log%';
默认情况下slow_query_log的值为OFF,表示慢查询日志是禁用的
可以通过设置slow_query_log的值来开启
使用set global slow_query_log=1开启慢查询日志只对当前数据库生效
如果重启MYSQL,则会失效
set global slow_query_log=1
修改配置文件my.cnf
在[mysqld]下增加或修改参数
slow_query_log和slow_query_log后,然后重启MYSQL服务器,将下面两行配置进my.cnf配置文件
slow_query_log=1
slow_query_log_file=/var/lib/mysql/dhy.log
关于慢查询的参数slow_query_log,它指定慢查询日志文件的存放路径,系统默认会给一个缺省的文件host_name-slow.log(如果没有指定参数slow_query_log_file的话)
默认情况下long_query_time的值为10秒,表示超过10秒的sql被定义为慢sql,会被记录
查看最长查询时间参数的命令:
show variables like 'long_query_time%';
也可以使用命令修改,也可以在my.cnf参数里面修改
如果运行时间恰好等于long_query_time,则不会被记录下来,也就是说mysql源码是判断大于long_query_time而不是大于等于
设置最长查询时间的命令:
set global long_query_time=3
修改后需要重写连接或新开一个会话才能看到修改值:
show variables like 'long_query_time%';
或者使用下面的命令查看:
show global variables like 'long_query_time%';
show global status like '%Slow_queryies%';
显示帮助信息
mysqldumpslow --help
mysqldumpslow的帮助信息:
s:表示按照何种方式排序
c:访问次数
l:锁定时间
r:返回记录
t:查询时间
al:平均锁定时间
ar:平均返回记录数
at:平均查询时间
t:即为返回前面多少条数据
g:后边搭配一个正则匹配模式,大小写不敏感
得到返回记录集最多的10个sql
mysqldumpslow -s -r -t 10 /var/lib/mysql/dhy.log
得到访问次数最多的10个sql
mysqldumpslow -s -c -t 10 /var/lib/mysql/dhy.log
得到按照时间排序的前10条里面含有左连接的查询语句
mysqldumpslow -s -t -t 10 -g 'left join' /var/lib/mysql/dhy.log
建立在使用这些命令时,结合|more来使用,否则可能会爆屏
mysqldumpslow -s -c -t 10 /var/lib/mysql/dhy.log | more
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/m0_53157173/article/details/120587953
内容来源于网络,如有侵权,请联系作者删除!