概述
MySQL 慢查询日志是排查问题 SQL 语句,以及检查当前 MySQL 性能的一个重要手段。默认情况下,MySQL 并不启动慢查询日志,需要我们手动来开启。如果不是调优需要的话,一般不建议开启慢查询,毕竟开启慢查询或多或少会带来一定的性能影响。
关键参数
- slow_query_log: 是否开启慢查询日志,默认 OFF,开启则设置为 ON。
- slow_query_log_file: 慢查询日志文件存储位置。
- long_query_time: 超过多少秒的查询才会记录到日志中。单位是秒。
- log_queries_not_using_indexes: 是否把没有使用到索引的 SQL 记录到日志中,默认 OFF,开启则设置为 ON。
配置
默认情况下是没有开启慢查询日志,下面通过两种配置方式进行设置。
临时配置
1 | mysql> set global slow_query_log='ON'; |
永久配置
1 | /etc/mysql/conf.d/mysql.cnf |
配置好慢 SQL 相关参数后,重启 MySQL 即可。
查看慢查询功能
1 | mysql> show variables like 'slow_query%'; |
1 | mysql> show variables like 'long_query_time'; |
1 | mysql> show variables like 'log_queries_not_using_indexes'; |
mysqldumpslow
mysqldumpslow 是 MySQL 官方提供的慢查询日志分析工具,使用 mysqldumpslow 命令可以非常明确的得到各种我们需要的查询语句。
小结
慢查询日志是排查SQL问题以及优化的重要手段,在生产环境中一般都会实时采集慢查询日志,对 MySQL 查询语句监控、分析。