MySQL高级开发--慢查询日志分析(一)--获取慢日志

MySQL高级开发–慢查询日志分析(一)–获取慢日志

标签(空格分隔): MySQL


什么是慢查询日志

  1. MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阈值的语句,具体指运行时间超过long_query_time值得SQL,则会被记录到慢查询日志中
  2. 具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是运行10秒以上的语句
  3. 由他来查看哪些SQL语句超过了我们预定的最大容忍限度。我们收集这种SQL,做explain的分析

怎么开启慢查询日志

默认情况下,MySQL数据库没有开启慢查询日志,需要我们手动设置这个参数。如果不是调优需要,不建议开启,开启慢查询日志,会带来一定的性能消耗
查看是否开启的命令

show variable like '%slow_query_log%';

设置慢查询开启:

set global slow_query_log = 1

注:这种设置方式,MySQL启动后会恢复到关闭状态,如果需要长期开启,需要修改配置文件。
这么设置之后,需要重新启动一个会话才能生效。

什么样的信息才会在慢查询日志中体现

执行时间大于阈值long_query_time的SQL。
查看long_query_time的信息命令:

show variables like '%long_query_time%';

怎么分析慢查询日志

  1. 查看超过阈值的记录数命令
show variable status like '%slow_%'

2.在生产环境上,需要抓取慢查询的SQL。分析是一个体力活,可以使用mysql提供的慢查询分析工具:mysqldumpslow。
该命名有以下几个参数:

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

例如:
1.得到返回记录集最多的10个SQL

mysqldumpslow -s -r -t 10 /logs/mysql-slow.log

2.得到访问次数最多的10个SQL

mysqldumpslow -s -c -t 10 /logs/mysql-slow.log

3.得到按照时间排序的前10条里面含有做链接的查询语句

mysqldumpslow -s t -t 10 -g "left join" /logs/mysql-slow.log

4.另外建议在使用这些命令时结合|和more使用,否则又可能出现爆屏情况

mysqldumpslow -s r -t 10 /logs/mysql-slow.log | more
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值