MySQL慢查询日志

一、慢查询日志是什么

  • MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录MySQL中响应时间超过阈值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。
  • 具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中,long_query_time的默认值为10,意思是运行10秒以上的语句
  • 由他来查看哪些SQL超出了我们的最大忍耐时间值,比如一条SQL执行超过5秒钟,我们就算慢SQL,希望能收集超过5秒的SQL,结合之前explain进行全面分析

二、 真实应用场景如何进行优化

  • 观察,至少跑一天
  • 观察慢查询日志,设置阈值,比如超过五秒钟的就是慢SQL,并将它抓取出来
  • explain+慢SQL分析
  • show profile
  • DBA进行进行SQL数据服务器参数调优

三、SQL慢查询日志

  • 查看是否开启
 show  variables like '%slow_query_log%'

查看慢SQL日志

  • 开启慢查询日志
set global slow_query_log=1

开启慢查询日志
这样,慢查询日志就开启了,什么样的SQL才会记录到慢查询日志中呢

  • 查看当前多少秒的SQL会被记录到慢查询日志中
 show variables like 'long_query_time%'

默认慢查询时间

默认的慢SQL时间为10s,超过10秒就会被记录

  • 设置慢查询的阈值时间
 show variables like 'long_query_time%'

设置阈值时间

  • 当我们设置之后,重新查询阈值时间
 show variables like 'long_query_time%'

在这里插入图片描述

  • 注意:当我们设置完成时查看,发现值还是修改前的值,这时需要重新连接或者新开一个会话才能看到修改值,或者使用下列命令查看
show global variables like 'long_query_time%'

在这里插入图片描述

  • 查看超出阈值的SQL语句数量
show global status like '%slow_queries%'

在这里插入图片描述

  • 打开慢SQL日志文件,查看
    在这里插入图片描述

分析出MySQL慢查询将慢的SQL语句进行了记录,缩小了我们排查SQL语句的范围

  • 注意:这些SQL语句配置的只在当前数据库生效,需要全部生效需要在my.cof文件下进行配置

[ mysqlId ]下进行配置:
slow_query_log=1
slow_query_log=/var/lib/mysql/yun-slow.log
long_query_time=3
log_output=FILE

四、日志分析工具mysqldumpslow

  • 参数解释

-s, 是表示按照何种方式排序
c: 访问计数
l: 锁定时间
r: 返回记录
t: 查询时间
al:平均锁定时间
ar:平均返回记录数
at:平均查询时间
-t, 是top n的意思,即为返回前面多少条的数据
-g, 后边可以写一个正则匹配模式,大小写不敏感的

  • 得到返回记录集最多的10个SQL。
    mysqldumpslow -s r -t 10 yun_slow.log
  • 得到访问次数最多的10个SQL
    mysqldumpslow -s c -t 10yun_slow.log
  • 得到按照时间排序的前10条里面含有左连接的查询语句。
    mysqldumpslow -s t -t 10 -g “left join” yun_slow.log
  • 另外建议在使用这些命令时结合 | 和more 使用 ,否则有可能出现刷屏的情况。
    mysqldumpslow -s r -t 20 yun-slow.log | more
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值