mysql中慢查询日志之profiles的使用

mysql中慢查询日志的使用

慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。

long_query_time默认值为10s,默认情况下,Mysql数据库并不启动慢查询日志,需要我们手动来设置这个参数,当然,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。慢查询日志支持将日志记录写入文件,也支持将日志记录写入数据库表。

//查看慢查询日志是否开启
show variables like ‘%slow_query_log%’;
这里写图片描述

//开启慢查询日志
set global slow_query_log=1;
这里写图片描述

//查看long_query_time参数
show variables like ‘long_query_time’;
这里写图片描述
默认10秒以上的sql语句记录到日志中

//修改long_query_time参数
set global long_query_time=0.1
这里写图片描述
修改后,需要重新连接或新开一个会话才能看到修改值

//查看索引的查询
show variables like ‘log_queries_not_using_indexes’;
这里写图片描述

//开启索引的查询
set global log_queries_not_using_indexes=1;
这里写图片描述


**分析语句慢的原因:** 开启慢查询日志以后去执行时间比较长的sql语句,再通过explain 或者profiles来分析语句。
  1. Show profiles; //显示当前所有连接的工作状态.
    这里写图片描述

注意以下情况:

converting HEAP to MyISAM 查询结果太大时,把结果放在磁盘 (语句写的不好,取数据太多)
create tmp table 创建临时表(如group时储存中间结果,说明索引建的不好)
Copying to tmp table on disk 把内存临时表复制到磁盘 (索引不好,表字段选的不好)
Sending data 一次性发送的数据量(数据量不能太大)


特别注意:
mysql 5.5 以后加了一个profile设置,可以观察到具体语句的执行步骤:
show variables like “profiling”; //查看profile是否开启

set profiling=on;//profile开启

这里写图片描述


show profile for query 5; //查看单条语句执行过程
这里写图片描述


show profile block io,cpu for query 2; //查看cup io等花费的时间
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值