《MySQL慢查询优化》之慢SQL日志获取与分析

1、什么是慢查询

  慢查询,顾名思义为执行比较慢的SQL查询。默认情况下,MySQL是关闭慢查询日志的,因为开启慢查询日志一定程度上会影响数据库性能。

MySQL提供了慢查询日志记录功能,用于记录执行时间超过参数long_query_time阈值的SQL执行日志,同时可以自定义配置、关闭、开启慢查询日志,用以帮助MySQL使用者更好的分析慢查询SQL,便于开展SQL性能优化工作。 

2、如何开启慢查询日志

  •  查看是否开启日志

show variables like '%slow_query_log%';

  • 开启/关闭日志

set global slow_query_log=1; //开启

set global slow_query_log=0; //关闭
  • 开启效果

  MySQL开启慢查询日志之后,会自动记录执行时间超过参数long_query_time的SQL日志,参数long_query_time默认数值为10s

 show variables like 'long_query_time%'; 

 show global variables like 'long_query_time%';// 实时查看修改之后的参数值,不需要重新创建会话。

3、如何配置慢查询日志

  • 修改慢查询阈值

set global long_query_time=5
  • 如何查找慢查询日志

 show global variables like 'slow_query_log_file%';

  • 如何统计慢查询记录数量

show global status like '%Slow_queries%';

4、如何永久配置慢查询日志

  实际上,上文对慢查询日志的配置都是基于命令set操作,这些配置在MySQL重启之后都会失效。MySQL对这些参数的设置都是有相应的配置文件进行管理,

  • Linux,默认在/etc/my.cnf。
  • Windows,默认在my.ini。

打开配置文件,包含慢查询相关参数,可以自定义修改:

   因此,可以通过修改MySQL配置文件来永久配置慢查询日志。

但是不建议这样做,因为开启慢查询日志会造成MySQL性能受到一定影响,一般情况只是在SQL调优阶段开启慢查询日志。

5、日志分析工具

  MySQL提供了日志分析工具mysqldumpslow,帮助使用者自动化分析慢查询日志,将分析结果按照参数所指定的顺序输出。

常见参数:

  • r:返回记录
  • t: 查询时间
  • c: 访问次数
  • -t:即为返回前面多少条的数据
  • -s: 是表示按照何种方式排序
  • -g:后边搭配一个正则匹配模式,大小写不敏感的

通常,命令可以结合 | 和 less、more 等其他命令使用,便于参看。

常见使用:

  • 获取访问次数最多的前10个SQL: mysqldumpslow -s c -t 10 /var/lib/mysql/mysql-slow.log | less
  • 获取返回记录集最多前10个SQL: mysqldumpslow -s r -t 10 /var/lib/mysql/mysql-slow.log | less
  • 获取按照时间排序的前10条含有左连接的SQL: mysqldumpslow -s t -t 10 -g "left join" /var/lib/mysql/mysql-slow.log | more
原文地址:https://www.cnblogs.com/gavincoder/p/14056769.html