众所周知,mysql slow log中很多sql语句结构和对象是相同,只是其中变量不一样,对于这样的sql,我们完全可以将其归为一类,统计其执行次数、执行时间平均值等参数,而pt-query-digest恰好就是这样一款工具,能够对slow sql进行归类、分组和分析,统计同一类sql多次运行后的参数:max、min、avg、count等:

# Query 6: 0.23QPS, 1.07x concurrency, ID 0x7F4D624CEA244E17 at byte 17591954

# This item isincluded in the report because it matches --limit.

# Scores: V/M =3.20

# Time range: 2016-08-0814:41:43 to 14:48:23

# Attribute    pct  total   min   max  avg  95%  stddev median

# ============ ========== ======= ======= ======= ======= ======= ===     ====

# Count       0     94

# Exec time     0   426s   2s   29s   5s  9s   4s   3s

# Lock time     0   23ms   75us   4ms  239us 384us  506us  138us

# Rows sent     0   94      1  1      1       1       0      1

# Rows examine   0    94       1       1      1       1       0      1

# Query size     0  6.28k      68     70   68.43   69.19      1   65.89

# String:

# Databases   test

# Hosts     192.168.1.19(35/37%),  192.168.1.20(33/35%)... 1 more

# Users     test

# Query_timedistribution

#  1us

#  10us

# 100us

#  1ms

#  10ms

# 100ms

#  1s ################################################################

#  10s+ ###

# Tables

#    SHOW TABLE STATUS FROM `test` LIKE 'user \G

#    SHOW CREATE TABLE `test`.`user`\G

# EXPLAIN /*!50100PARTITIONS*/

select * from userwhere periods = 'before' limit 1\G

最后,pt-query-digest还能对归类结果进行基于sql执行时间的max、min或者sum的排序统计

但是,如果我要截取query time top 10的sql,根据max进行排序,并不科学,对于执行多次的sql,更

合理的应该是使用query time的中位值median进行排序,而前文显示的统计结果中,在Exec time一行中也恰好给出了每一类sql的执行时间的median值。

因此,为得到的更合理的结果,应根据median过滤获取最终结果

#首先使用pt-query-digest生成统计文件

/usr/local/bin/pt-query-digest slow.log >slow_log_report.log

#上述的统计包括了所有的sql,在这里只截取Query time:median >6s的sql

#!/bin/bash

file='slow_log_report.log'

median_linenum_array=(`cat $file |grep -n "^# Exec time" |awk '{if($11>6) print $1}'|cut -d: -f1`)

for((i=0;i

do

start_linenum_array[$i]=$(( ${median_linenum_array[$i]} - 7 ))

end_linenum_array[$i]=`awk 'NR>='''$(( ${start_linenum_array[$i]} + 1 ))'''&&/^# Query [1-9]+/{print NR-1;exit}' $file`

sed -n ''''${start_linenum_array[$i]}''','''${end_linenum_array[$i]}'''p' $file>>slowlog_report_top.log

done

需要注意的是,media只有sql语句执行次数多的时候才有统计意义,如果执行的很少,只有一两次,那media就没有意义了,所以,最终还是要结合count和median进行筛选

MySQL slowlog 统计_mysql slow log 简单统计相关推荐

  1. mysql slow log 分析工具_mysql slow log分析工具的比较

    mysql 中的 slow log 是用来记录执行时间较长(超过 long_query_time 秒)的 sql 的一种日志工具. 启用 slow log 在 my.cnf 中设置 [mysqld] ...

  2. mysql slow设置_mysql slow log设置

    1.mysql slow query log参数设置 首先简单的介绍一下如何开启mysql的slowlog,主要设置一下几个参数: 1)–slow_query_log = 1,开启slowlog. 2 ...

  3. mysql慢查询日志轮转_MySQL slow log相关参数解释

    slow_query_log=1       #是否启用慢查询日志,1为启用,0为禁用 slow_query_log_file=slow.log       #指定慢查询日志文件的路径和名字,可使用绝 ...

  4. java 统计汉字个数_Java简单统计字符串中汉字,英文字母及数字数量的方法

    本文实例讲述了java简单统计字符串中汉字,英文字母及数字数量的方法.分享给大家供大家参考,具体如下: package org.zhy.demo.algorithm; /** * 有一个字符串,其中包 ...

  5. mysql怎么对月份进行统计_MySQL如何按月份统计数据详解(转)

    这篇文章主要对MySQL按月份统计数据介绍:表finance有俩个字段如下date datemoney double(15,2)下面需要对表finance的2010年财务数据,按月进行统计 selec ...

  6. wdcp mysql日志文_mysql的日志简单总结

    事务日志 redo log mysql的innodb引擎在开启事务后,中间的操作都会先在内存中进行.然后将这些数据先写入到redo log中--"日志先行"(Write-Ahead ...

  7. mysql制作搜索引擎_MySQL 实现一个简单版搜索引擎,真是绝了!

    MySQL 实现一个简单版搜索引擎,真是绝了! 前言只有Innodb和myisam存储引擎能用全文索引(innodb支持全文索引是从mysql5.6开始的) char.varchar.text类型字段 ...

  8. 怎么改mysql的搜索引擎_MySQL全文索引实现简单版搜索引擎实例代码

    前言 只有Innodb和myisam存储引擎能用全文索引(innodb支持全文索引是从mysql5.6开始的) char.varchar.text类型字段能创建全文索引(fulltext index ...

  9. mysql全文索引 版本_MySQL 全文索引实现简单版搜索引擎

    如 +-------+ | value | +-------+ | a | | about | | an | | are | | as | | at | | be | | by | | com | | ...

最新文章

  1. GitHub上大热的Deep Photo终于有TensorFlow版了!
  2. bzoj4196:[Noi2015]软件包管理器
  3. pscs6插件_PS插件-灯光工厂
  4. Java-jdk下载以前版本需要的账号
  5. 对2016年android就业的一些看法
  6. Oracle 11g Release 1 (11.1)——自动存储管理(Automatic Storage Management,ASM)
  7. 网易新闻iOS版开发使用的第三方框架和组件列表
  8. hdoj2084:数塔(dp基础题----递归写法/状态转移方程法)
  9. 软件测试算是后端吗,软件测试--前后端数据交互
  10. RoR ActionCable
  11. 理解int的存储方式以及二进制编辑器的使用
  12. Spring 常用注解
  13. android反翻译工具下载,安卓dex反编译工具(dex-translator)下载_安卓dex反编译工具(dex-translator)官方下载-太平洋下载中心...
  14. 安卓超级压缩管理器(ZArchiver) 汉化版 v0.5
  15. PHP学习笔记好(待完善)
  16. 程序员每天会阅读哪些技术网站来提升自己?
  17. QGIS基础教程 (入门级)——下载安装、新建工程、加载数据
  18. JAVA编写文件格式转换UTF-8
  19. python3统计英文诗歌每行单词数量
  20. 《惢客创业日记》2020.07.18-19(周六)谦逊的野人-马斯克

热门文章

  1. pyqt5 qwidget 边框_实战PyQt5: 116-画刷类QBrush
  2. 001机器学习深度学习简介
  3. android逆透视变换坐标,android – 如何使用OpenGL模拟OpenCV的warpPerspective功能(透视变换)...
  4. 轻量云腾讯云服务器如何退款,腾讯云服务器等产品可以退款多少次?
  5. 算法提高 陶陶摘苹果2(java)
  6. 特殊年份(java)
  7. python创建线程在后台运行
  8. 解决IDEA运行Flink报错java.lang.NoClassDefFoundError: org/apache/flink/api/common/ExecutionConfig....
  9. 解决关闭hbase时stop-hbase.sh报错stopping hbasecat: /tmp/hbase-xxxx-master.pid: No such file or directory
  10. java正立三角形_java for循环练习(9*9乘法表、正三角形、菱形)