Mysql慢查询日志的开启与应用

来源:互联网 发布:南风知我意温南百度云 编辑:程序博客网 时间:2024/06/05 17:21

1.什么是慢查询日志?

Mysq的慢查询日志指得是Mysql提供的一种日志记录,它用来记录在Mysql中响应时间超过阈值的语句,具体指运行时间超过long_query_time值的SQL,则会记录到慢查询日志中。long_ query_time的默认值是秒,即超过10秒的SQL语句将会被记录到慢查询日志中。

 

默认情况下Mysql的慢查询日志是没有开启的,需要我们手动配置参数来开启。如果不是为了调优,建议最好不要开启,因为慢查询日志或多或少会带来一些性能的影响。慢查询日志支持将日志写入文件。

2.常用命令

show variables like'%slow_query_log%';

该命令用于查看当前慢查询日志是否开启及存放目录。

Linux下



set global slow_query_log=1;

通过对global slow_query_log参数的配置,可以开启慢查询日志,但是只对当前数据库有效,Mysql重启后则失效。

如果要永久生效,就需要修改my.cfg文件。

在其[Mysqld]下增加:

slow_query_log=1

slow_query_log_flie=自定义log文件存放的目录


SHOW VARIABLES LIKE ‘%long_query_time%’;


如上图所示,默认是10s,该参数也可以修改,如需要长期有效,也需要在my.cnf文件中配置。


set global long_query_time=3;

设置完成后重新启动一个会话,设置时间才会生效。

需要注意的是,这里配置的时间是允许的最大时间,只有sql的运行的时间大于long_query_time时,才会将这条sql记录在日志。




这里为了测试,我们输入select sleep(4)这条sql,看看执行完成后是否可以将其记录在日志文件中。

.

查看日志文件


show global status like '%slow_queries%';

该命令用来查看当前系统下有多少条慢sql;


在实际的项目中,如何手动的分析日志,查找分析sql,无疑是一个耗时耗力的事。Mysql给我们提供了一个分析日志的工具——mysqldumpslow

可以通过mysqldumpslow–help;


以下是部分常用的选项:


在实际的开发中,通过对选项的组合使用,来分析sql,对sql进行优化。


原创粉丝点击