MySQL性能优化--慢查询日志

一、慢查询日志是什么
慢查询日志是MySQL提供的一种日志文件,可以记录执行时间大于所设置值的sql语句(不记录ddl语句),用于用户分析。不过它默认是关闭的,需要用户自己设置启用。

二、使用方法
1、查看是否已启用

mysql> show variables like 'slow_query%';
+---------------------------+----------------------------------+
| Variable_name             | Value                            |
+---------------------------+----------------------------------+
| slow_query_log            | OFF                              |
| slow_query_log_file       | /mysql/data/localhost-slow.log   |
+---------------------------+----------------------------------+

OFF表示功能未启用。

2、设置开启

mysql> set global slow_query_log='ON'; 

3、设置日志保存路径

mysql> set global slow_query_log_file='/mysql/data/slow.log';

4、设置记录范围

mysql> set global long_query_time=1;

单位是秒,表示只要执行时间大于(不包括等于)该值的sql查询都会记录下来。MySQL5.1版本后,支持的时间粒度精确到了微妙,例如可以设置为0.000001。
一种设置技巧是:可以通过设置long_query_time为0来捕获所有的查询。因为有时候对所有的语句进行分析是有必要的。
另外也可以通过在配置文件my.cnf中添加参数的方式进行设置:

slow_query_log = ON
slow_query_log_file = /mysql/data/slow.log
long_query_time = 1

设置完成后需要重启MySQL服务。

三、如何分析日志文件
直接打开整个慢查询日志是不明智的。
1、第一种分析方法是利用MySQL自身提供的mysqldumpslow命令。

注意事项:如果直接在Windows系统下执行mysqldumpslow命令是不可行的,还需要安装perl环境,mysqldumpslow.pl脚本位于MySQL安装目录bin目录中

如果希望得到执行时间最长的10条sql语句,可以运行如下命令:

mysqldumpslow -s al -n 10 slow.log

2、第二种分析方法是使用pt-query-digest工具
这也是推荐的方法,该工具的分析结果更具体、更完善。

三、注意事项

  1. 在mysql当前版本中,慢查询日志是开销最低,精度最高的测量查询时间的工具;
  2. 慢查询日志带来的I/O开销可以忽略不计;
  3. 需要注意的是,日志可能消耗大量的磁盘空间;
  4. MySQL支持将慢查询日志记录到表中,但这样做没什么意义,因为这会导致时间粒度退化到秒级,并且对性能有较大影响。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值