如何获取有性能问题的sql

本文介绍如何通过慢查询日志来定位MySQL性能问题,包括启动慢查日志的方法、配置参数详解,以及常用的分析工具如mysqldumpslow和pt-query-digest等。同时提供了实时获取长时SQL的查询语句。
   1.通过用户反馈获取存在性能问题的SQL.
  2.通过慢查日志获取存在性能的SQL.
  启动慢查日志
  slow_query_log=on
  set global slow_query_log=on;
 
  slow_query_log_file 指定慢查日志存储路径及文件
  默认情况保存在mysql的数据目录中,最好日志存储和数据存储分开。
  long_query_time
  
  指定 记录慢查日志SQL执行时间的阀值,单位为秒,默认值为10秒。精确到微秒,
  如果为一毫秒这个值为 0.001 。
   记录的语句包括
  1.查询语句
  2.数据修改语句
  3.已经回滚的SQL
  log_queries_not_using_indexes 是否记录未使用索引的SQL
  慢查日志中记录的内容:
  
  第一行记录了:
  用户信息,线程ID号 用户信息 sbtest ,线程ID为 17
  第二行 :记录了查询时间
  第三行 :锁的时间
  第四行 : 返回的记录行数
  第五行: 扫描的行数
  第六行 : 执行的时间
  第七行 : 执行的语句
   常用慢查询日志分析工具
  1.mysqldumpslow
  汇总除查询条件外其他完全相同的SQL,并将分析结果按照参数中指定的顺序输出。
  mysqldumpslow –s r –t 10 slow.log
  -s order (c,t,l,r,at,al,ar)
  c: 总的次数
  t:总的时间
  l:锁的时间
  r: 总数据行
  at,al,ar: t,l,r 的平均数
  at 总时间 /总次数
  -t top 指定取前几条作为结果输出
  2.pt-query-digest
  pt-query-digest –explain -h=127.0.0.1,u=root,p=root slow.log>slow.report
  可以包括执行计划。
   3.实时获取性能的问题的SQL
  
  select id,user,host,db,command ,time,state,info from information_schema.processlist where time>60;
  查询服务器中查询时间超过60秒的SQL.

转载于:https://www.cnblogs.com/ghjbk/p/6709111.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值