概述
- MySQL的慢查询日志是MySQL提供的一种日志记录,他用来记录在MySQL中响应时间超过阈值的sql语句。要超过,也就是大于,等于都不会记录。
- 具体指运行时间超过long_query_time值的SQL, 则会被记录到慢查询日志中。 long_query_time的默认值为10, 意思是运行10秒以上的语句。
- 由他来查看哪些SQL超出了我们的最大忍耐时间值, 比如一条sql执行超过5秒钟, 我们就算慢SQL, 希望能收集超过5秒的sql, 结合之前explain进行全面分析优化。
默认情况下是没有开启慢查询日志的,可以使用命令:
SHOW VARIABLES LIKE ‘%slow_query_log%’; 来查看是否开启。

开启慢查询日志:
set global slow_query_log=1;
再次查看:开启了

查看慢查询设置的阈值,也就是查询时间超过这个阈值,就会被记录到慢查询日志。
SHOW VARIABLES LIKE ‘long_query_time%’;

默认10秒,单位是秒。
设置成5秒:
SET long_query_time=5
再次查看:

上面的配置都是暂时性的,mysql服务重启后就会失效,如果要长期生效,要在配置文件中配置。
[mysqld]
slow_query_log=1 #开启慢查询
slow_query_log_file=/var/lib/mysql/localhost.log #设置记录慢查询日志的文件
long_query_time=3 #阈值
使用以下sql
select sleep(6) ; #这个sql会睡眠6秒。超过了五秒。

现在查看慢查询日志:
cat /var/lib/mysql/localhost-slow.log #记录了慢的sql语句,执行时间,锁定时间等。

使用MySQL的慢日志分析工具mysqldumpslow进行慢日志分析:
mysqldumpslow 参数 慢日志文件
参数有以下:
| 参数 | 描述 |
|---|---|
| -s | 以何种方式排序,参数的值是c l r t al ar at 解释在下面 |
| c | 访问次数 |
| l | 锁定时间 |
| r | 返回记录 |
| t | 查询时间 |
| al | 平均锁定时间 |
| ar | 平均返回记录数 |
| at | 平均查询时间 |
| -t | 返回多少条的数据 |
| -g | 后边搭配一个正则匹配模式, 大小写不敏感的 |
比如查询查询时间最长的十条慢查询:
mysqldumpslow -s t -t 10 /var/lib/mysql/localhost-slow.log # -s 接t 表示按查询时间排序,-t 10 表示排序后的数据返回前十条。

只是我这里只有一条。
返回十条带有左连接查询的慢sql。
mysqldumpslow -t 10 -g "left join" /var/lib/mysql/localhost-slow.log

没有,因为我们只有一条 select sleep(6);的慢查询。

这样就有了。
得到慢查询sql,就可以使用EXPLAIN 结合索引等对sql进行优化。
当然, 如果不是调优需要的话, 一般不建议启动该参数, 因为开启慢查询日志会或多或少带来一定的性能影响。
本文介绍了MySQL的慢查询日志功能,用于记录响应时间超过设定阈值的SQL语句。通过设置long_query_time参数,可以监控运行超过指定时间的查询。慢查询日志默认关闭,可以通过命令开启,并在配置文件中持久化设置。文章还展示了如何使用mysqldumpslow工具分析慢查询日志,找出性能瓶颈,并进行SQL优化。注意,启用慢查询日志可能对性能造成一定影响,应谨慎使用。
2326

被折叠的 条评论
为什么被折叠?



