0.什么是慢查询日志
MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体值运行时间超过 long_query_time 值的SQL,则会被记录到慢查询日志中. long_query_time的默认值为10,意思是10秒.
1.如何使用
查询慢查询是否启动和慢查询日志默认位置
. 可以利用
set global slow_query_log=1;
开启慢查询,当然只限于此处的会话.,重启后自动失效
如果需要永久生效,需要在MySQL的配置文件my.cnf的[mysqld]下添加
slow_query_log=1
slow_query_log_file=/var/lib/mysql/ms-slow.log //主机名-slow.log
查询慢查询时间以及修改时间:
show global variables like '%long_query_time%';
set global long_query_time=3;
如果需要永久生效,需要在MySQL的配置文件my.cnf的[mysqld]下添加
long_query_time=3
记住命令中要加global,因为是当次修改的,如果不加global查询会显示没有改变,需要重新连接或者新开一个会话才可以看到改变
模拟慢SQL
查看慢SQL日志记录情况
查看慢SQL数量
日志分析工具mysqldumpslow
mysqldumpslow --help
s:是表示按照何种方式排序
c:访问次数
l:返回记录
r:查询时间
al:平均锁定时间
ar:平均返回记录数
at:平均查询时间
t: 即为返回前面多少条的数据
g:后面搭配一个正则匹配模式,大小写不敏感的.
小例子:(把慢日志路径换成自己的)
1.得到返回记录最多的10个SQL
mysqldumpslow -s r -t 10 /var/lib/mysql/ms-slow.log
2.得到访问次数最多的10个SQL
mysqldumpslow -s c -t 10 /var/lib/mysql/ms-slow.log
3.得到按照时间排序的前10条里面含左连接的查询语句
mysqldumpslow -s t -t 10 -g "left join" /var/lib/mysql/ms-slow.log
4.另外建议在使用这些命令时结合|和more使用,否则有可能会出现爆屏情况
mysqldumpslow -s r -t 10 /var/lib/mysql/ms-slow.log | more