mysql 慢查询日志分析与使用

mysql 慢查询日志分析与使用

查询是否开启: SHOW VARIABLES LIKE '%slow_query_log%';

开启:SET GLOBAL slow_query_log=1;  mysql重启后会失效,如果需要永久生效(生产环境不建议一直开启,会损耗性能。)可以修改my.cnf文件加入如下配置,然后重启mysql。

slow_query_log=1

slow_query_log_file=/usr/local/mysql/slog-sql.log

那么开启了慢查询后,什么样的sql才会被记录到慢查询日志里面呢?

这个是由参数long_query_time控制,默认情况下,long_query_time 的值为10秒。

设置慢查询时间命令:SHOW VARIABLES LIKE '%long_query_time%';

可以使用命令修改,也可以在my.cnf配置文件中修改,假如运行时间正好等于long_query_time 并不会被记录下来,在mysql的源码中是判断大于long_query_time的sql才会被记录下来。

设置慢sql 的阈值时间:SET GLOBAL long_query_time=3;

查询当前系统有多少慢sql: SHOW GLOBAL STATUS LIKE '%Slow_queries%';

Mysql: 提供的日志分析工具:mysqldumpslow:

常用日志分析命令:

1: 得到返回记录集最多的10个sql:

mysqldumpslow -s r -t 10  /usr/local/mysql/slow-sql.log

2: 得到访问次数最多的10个慢sql:

Mysqldumpslow -s c -t 10 /usr/local/mysql/slow-sql.log

3:mysqldumpslow -s  t  -t  10 -g  “left join” /usr/local/mysql/slow-sql.log

另外建议防止数量过多建议搭配 | more 使用:

mysqldumpslow -s  t  -t  10 -g  “left join” /usr/local/mysql/slow-sql.log  | more

原文地址:https://www.cnblogs.com/dw3306/p/13915741.html