备忘自: http://blog.csdn.net/seteor/article/details/24017913

1. 工具简介

pt-query-digest是用于分析mysql慢查询的一个工具,它可以分析binlog、General log、slowlog,也可以通过SHOWPROCESSLIST或者通过tcpdump抓取的MySQL协议数据来进行分析。可以把分析结果输出到文件中,分析过程是先对查询语句的条件进行参数化,然后对参数化以后的查询进行分组统计,统计出各查询的执行时间、次数、占比等,可以借助分析结果找出问题进行优化。

pt-query-digest是一个perl脚本,只需下载并赋权即可执行。

[root@test1 ]# wget percona.com/get/pt-query-digest

[root@test1 ]# chmod u+x pt-query-digest

2.语法及重要选项

pt-query-digest [OPTIONS] [FILES] [DSN]

--create-review-table当使用--review参数把分析结果输出到表中时,如果没有表就自动创建。

--create-history-table当使用--history参数把分析结果输出到表中时,如果没有表就自动创建。--filter对输入的慢查询按指定的字符串进行匹配过滤后再进行分析

--limit限制输出结果百分比或数量,默认值是20,即将最慢的20条语句输出,如果是50%则按总响应时间占比从大到小排序,输出到总和达到50%位置截止。

--host  mysql服务器地址

--usermysql用户名--passwordmysql用户密码

--history 将分析结果保存到表中,分析结果比较详细,下次再使用--history时,如果存在相同的语句,且查询所在的时间区间和历史表中的不同,则会记录到数据表中,可以通过查询同一CHECKSUM来比较某类型查询的历史变化。

--review 将分析结果保存到表中,这个分析只是对查询条件进行参数化,一个类型的查询一条记录,比较简单。当下次使用--review时,如果存在相同的语句分析,就不会记录到数据表中。

--output 分析结果输出类型,值可以是report(标准分析报告)、slowlog(Mysql slow log)、json、json-anon,一般使用report,以便于阅读。

--since 从什么时间开始分析,值为字符串,可以是指定的某个”yyyy-mm-dd [hh:mm:ss]”格式的时间点,也可以是简单的一个时间值:s(秒)、h(小时)、m(分钟)、d(天),如12h就表示从12小时前开始统计。

--until 截止时间,配合—since可以分析一段时间内的慢查询。

3.      标准分析报告解释

第一部分:总体统计结果,如下图

Overall: 总共有多少条查询,上例为总共266个查询。

Time range: 查询执行的时间范围。

unique: 唯一查询数量,即对查询条件进行参数化以后,总共有多少个不同的查询,该例为55。

total: 总计   min:最小   max: 最大  avg:平均

95%: 把所有值从小到大排列,位置位于95%的那个数,这个数一般最具有参考价值。

median: 中位数,把所有值从小到大排列,位置位于中间那个数。

第二部分:查询分组统计结果,如下图

由上图可见,这部分对查询进行参数化并分组,然后对各类查询的执行情况进行分析,结果按总执行时长,从大到小排序。

Response: 总的响应时间。

time: 该查询在本次分析中总的时间占比。

calls: 执行次数,即本次分析总共有多少条这种类型的查询语句。

R/Call: 平均每次执行的响应时间。

Item : 查询对象

第三部分:每一种查询的详细统计结果,如下图:

由上图可见,12号查询的详细统计结果,最上面的表格列出了执行次数、最大、最小、平均、95%等各项目的统计。

Databases: 库名

Users: 各个用户执行的次数(占比)

Query_time distribution : 查询时间分布, 长短体现区间占比,本例中1s-10s之间查询数量是10s以上的两倍。

Tables: 查询中涉及到的表

Explain: 示例

4.用法示例

(1)直接分析慢查询文件:

pt-query-digest  slow.log > slow_report.log

(2)分析最近12小时内的查询:

pt-query-digest  --since=12h  slow.log > slow_report2.log

(3)分析指定时间范围内的查询:

pt-query-digest slow.log --since '2014-04-17 09:30:00' --until '2014-04-17 10:00:00'> > slow_report3.log

(4)分析指含有select语句的慢查询

pt-query-digest--filter '$event->{fingerprint} =~ m/^select/i' slow.log> slow_report4.log

(5) 针对某个用户的慢查询

pt-query-digest--filter '($event->{user} || "") =~ m/^root/i' slow.log> slow_report5.log

(6) 查询所有所有的全表扫描或full join的慢查询

pt-query-digest--filter '(($event->{Full_scan} || "") eq "yes") ||(($event->{Full_join} || "") eq "yes")' slow.log> slow_report6.log

(7)把查询保存到query_review表pt-query-digest  --user=root –password=abc123 --review  h=localhost,D=test,t=query_review--create-review-table  slow.log

(8)把查询保存到query_history表pt-query-digest  --user=root –password=abc123 --review  h=localhost,D=test,t=query_ history--create-review-table  slow.log_20140401pt-query-digest  --user=root –password=abc123--review  h=localhost,D=test,t=query_history--create-review-table  slow.log_20140402

(9)通过tcpdump抓取mysql的tcp协议数据,然后再分析tcpdump -s 65535 -x -nn -q -tttt -i any -c 1000 port 3306 > mysql.tcp.txt

pt-query-digest --type tcpdump mysql.tcp.txt> slow_report9.log

(10)分析binlogmysqlbinlog mysql-bin.000093 > mysql-bin000093.sql

pt-query-digest  --type=binlog  mysql-bin000093.sql > slow_report10.log

(11)分析general logpt-query-digest  --type=genlog  localhost.log > slow_report11.log

mysql慢日志分析工具_mysql慢查日志分析工具 percona-toolkit相关推荐

  1. mysql日志恢复数据_Mysql 通过binlog日志恢复数据

    Binlog日志,即binary log,是二进制日志文件,有两个作用,一个是增量备份,另一个是主从复制,即主节点维护一个binlog日志文件,从节点从binlog中同步数据,也可以通过binlog日 ...

  2. mysql 慢查询日志的作用_MySQL慢查询日志的作用和开启

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

  3. mysql重做日志恢复数据_MySQL中重做日志,回滚日志,以及二进制日志的简单总结...

    MySQL中有六种日志文件, 分别是:重做日志(redo log).回滚日志(undo log).二进制日志(binlog).错误日志(errorlog).慢查询日志(slow query log). ...

  4. mysql通过日志恢复数据_mysql通过binlog日志来恢复数据

    简介 在生产的过程中有这么一个业务场景:比如我在2016-11-19 09:30:00 通过mysqldump的方式备份了数据库,但是在2016-11-19 10:30:00的时候数据库崩溃了,如果通 ...

  5. MySQL记录变化工具_MySQL 表记录数对比工具

    工具介绍: 以下介绍一个实时对比两个MySQL实例的中表记录数的工具 checkcount.py . 工具大多用于迁移后或者主从数据快速比较 , 快速验证两个mysql数据库实例每个表是否具有相同记录 ...

  6. linux检测病毒工具,Linux下查杀病毒工具

    top: 0px; margin-bottom: 16px; color: rgb(44, 44, 44); line-height: 28px; text-align: justify; word- ...

  7. mysql慢查询分析工具_mysql慢查询日志分析工具

    启用 slow log 有两种启用方式:1, 在my.cnf 里 通过 log-slow-queries[=file_name] 2, 在mysqld进程启动时,指定--log-slow-querie ...

  8. mysql 3种报错_MySQL读取Binlog日志常见的3种错误-阿里云开发者社区

    MySQL读取Binlog日志常见的3种错误 mysqlbinlog: [ERROR] unknown variable 'default-character-set=utf8mb4' 当我们在my. ...

  9. mysql 两张大表关联_MySQL的DropTable影响分析和最佳实践

    [0.前言] MySQL上直接Drop张大表,会有什么影响,能否直接写个 drop table ; 或者 truncate table ; 甚至是delete * from? 如果这张表足够大,比如1 ...

最新文章

  1. 固态器件理论(11)超导设备
  2. Boost TCP serverclient 有回调无发送
  3. 零基础学编程学java还是python-小白学编程选java、php、前端还是python
  4. 31. 提取text.txt和text2.txt的文件内容,进行文本等号以后求和
  5. topcoder srm 714 div1
  6. 获得2007年度的ISA-SERVER MVP
  7. 在 DotNetCore 3.0 程序中使用通用协议方式启动文件关联应用
  8. Ajax Login Sample
  9. 高德再回应导航错误致景区严重拥堵 这次复盘了事件原因
  10. libusb libusbk
  11. 百度又要开放哪些无人车新能力?“老司机”Apollo3.5要来了,市中心开车无压力...
  12. 菜鸟系列之C/C++经典试题(七)
  13. c #include如何找到文件_UNIX系统上程序员需要掌握的C编程环境的基础知识
  14. Python学习之购物车
  15. knx智能照明控制系统电路图_智能照明控制系统KNX
  16. 从生活中领悟设计模式(Python)
  17. turbo编译加强java_给你无限可能,创造更多价值! TurboShop V3.5 版本发布
  18. 开发工具之IAR下载与安装
  19. ie登录显示登录到ftp服务器,ie浏览器登陆ftp服务器
  20. 解决 win10 桌面 资源管理器未响应

热门文章

  1. 大数据可视化面临哪些挑战
  2. 大数据在智慧城市中重要的作用
  3. python周末看什么电影_电影院要开工了,用Python看一看最近有什么刚上映的电影...
  4. java制作风车图像的main方法_创意图形的绘制 会转的风车
  5. 计算机自带的桌面远程,如何远程控制电脑桌面
  6. PyCharm中直接使用Anaconda已安装的库
  7. Java并发——Synchronized关键字和锁升级,详细分析偏向锁和轻量级锁的升级
  8. Android - 开发者应该深入学习的10个开源应用项目
  9. 区块链学习(3)--以太坊Dapp开发
  10. 46、练习:输出指定目录下的所有文件名称