Mysql慢查询日志的开启与应用
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进行优化。