MySQL——慢查询日志分析

173 阅读1分钟

MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10。

通过慢查询日志,可以查找出哪些查询语句的执行效率低,以便进行优化。

如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。

long_query_time的默认值为10

mysql> SHOW VARIABLES LIKE 'long_query_time';
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.00 sec)

启动和设置慢查询日志

查看是否开启慢查询日志功能

  • slow_query_log:慢查询开启状态
  • slow_query_log_file:慢查询日志存放的位置(一般设置为 MySQL 的数据存放目录)
mysql> SHOW VARIABLES LIKE 'slow_query%';
+---------------------+----------------------------+
| Variable_name       | Value                      |
+---------------------+----------------------------+
| slow_query_log      | OFF                        |
| slow_query_log_file | /data/mysql/CHENG-slow.log |
+---------------------+----------------------------+
2 rows in set (0.00 sec)

开启慢查询日志功能

方式一:配置文件开启(永久有效)

将 log_slow_queries 选项和 long_query_time 选项加入到配置文件的 [mysqld] 组中。格式如下:

[mysqld]
show_query_log=on/off  # 开启或关闭
log-slow-queries=dir/filename
long_query_time=n
log_output=file

其中:

  • dir 参数指定慢查询日志的存储路径,如果不指定存储路径,慢查询日志将默认存储到 MySQL 数据库的数据文件夹下。
  • filename 参数指定日志的文件名,生成日志文件的完整名称为 filename-slow.log。 如果不指定文件名,默认文件名为 hostname-slow.log,hostname 是 MySQL 服务器的主机名。
  • “n”参数是设定的时间值,该值的单位是秒。如果不设置 long_query_time 选项,默认时间为 10 秒。

方式二:命令开启慢查询日志

SET GLOBAL slow_query_log=on/off; -- 开启或关闭

-- 全局和当前session都要修改
SET GLOBAL long_query_time=1;
SET long_query_time=1;