MySQL慢查询日志

本文介绍了MySQL的慢查询日志功能,用于记录响应时间超过设定阈值的SQL语句。通过设置long_query_time参数,可以监控运行超过指定时间的查询。慢查询日志默认关闭,可以通过命令开启,并在配置文件中持久化设置。文章还展示了如何使用mysqldumpslow工具分析慢查询日志,找出性能瓶颈,并进行SQL优化。注意,启用慢查询日志可能对性能造成一定影响,应谨慎使用。
概述
  1. MySQL的慢查询日志是MySQL提供的一种日志记录,他用来记录在MySQL中响应时间超过阈值的sql语句。要超过,也就是大于,等于都不会记录。
  2. 具体指运行时间超过long_query_time值的SQL, 则会被记录到慢查询日志中。 long_query_time的默认值为10, 意思是运行10秒以上的语句。
  3. 由他来查看哪些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进行优化。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值