SQL排查--慢查询日志


慢查询日志:
MySQL提供的日志记录,用于记录MySQL中响应时间超过阀值的SQL语句 (long_query_time默认10秒)
慢查询日志默认是关闭的;建议:开发调优时打开,而 最终部署时关闭。

1、慢查询日志的开启

1、检查是否开启了 慢查询日志 : show variables like ‘%slow_query_log%’ ;
在这里插入图片描述

2、临时开启:mysql已关闭就关闭了
set global slow_query_log = 1 ; --在内存中开启
exit
service mysql restart

在这里插入图片描述

3、永久开启:
/etc/my.cnf 中追加配置:
vi /etc/my.cnf
[mysqld]
slow_query_log=1
slow_query_log_file=/var/lib/mysql/localhost-slow.log

2、慢查询阈值的开启

1、慢查询阀值:默认为10s
show variables like ‘%long_query_time%’ ;

在这里插入图片描述

2、临时设置阀值:
set global long_query_time = 5 ; --设置完毕后,重新登陆后起效 (不需要重启服务)
在这里插入图片描述

3、永久设置阀值:
/etc/my.cnf 中追加配置:
vi /etc/my.cnf
[mysqld]
long_query_time=3

3、示例

1、查询超过阀值的SQL: show global status like ‘%slow_queries%’ ;

​ 因为没有海量数据,这里模拟一下,让线程停留15s,:select sleep(15);

在这里插入图片描述

2、慢查询的sql被记录在了日志中,因此可以通过日志 查看具体的慢SQL

cat /usr/local/mysql/data/hadoop1-slow.log

在这里插入图片描述

3、通过mysqldumpslow工具查看慢SQL,可以通过一些过滤条件 快速查找出需要定位的慢SQL
mysqldumpslow --help
s:排序方式
r :逆序
l :锁定时间
g :正则匹配模式

语法:mysqldumpslow 各种参数  慢查询日志的文件

--获取返回记录最多的3个SQL
mysqldumpslow -s r -t 3  /var/lib/mysql/localhost-slow.log

--获取访问次数最多的3个SQL
mysqldumpslow -s c -t 3 /var/lib/mysql/localhost-slow.log

--按照时间排序,前10条包含left join查询语句的SQL
mysqldumpslow -s t -t 10 -g "left join" /var/lib/mysql/localhost-slow.log
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值