pt-query-digest是用于分析mysql慢查询的一个工具,它可以分析binlog、General log、slowlog,也可以通过show processlist命令或者通过tcpdump 抓取的MySQL协议数据来进行分析。可以把分析结果输出到文件中,分析过程是先对查询语句的条件进行参数化,然后对参数化以后的查询进行分组 统计,统计出各查询的执行时间、次数、占比等,可以借助分析结果找出问题进行优化。默认情况下,该工具分析slow log并会报告哪个查询最慢。 查看帮助: $ pt-query-digest --help Usage: pt-query-digest [OPTIONS] [FILES] [DSN] --host #指定MySQL地址; --port #指定MySQL端口; --socket #指定MySQL SOCK文件; --user #指定MySQL用户; --password #指定MySQL密码; --type #指定将要分析的类型,默认是slowlog,还有如binlog,general log等; --charset #指定字符集; --filter #对输入的慢查询按指定的字符串进行匹配过滤后再进行分析; --limit #限制输出结果百分比或数量,默认值是20,即将最慢的20条语句输出,如果是50%则按总响应时间占比从大到小排序,输出到总和达到50%位置截止; --review #将分析结果保存到表中,这个分析只是对查询条件进行参数化,一个类型的查询一条记录,比较简单;当下次使用--review时,如果存在相同的语句分析,就不会记录到数据表中; --history #将分析结果保存到表中,分析结果比较详细,下次再使用--history时,如果存在相同的语句,且查询所在的时间区间和历史表中的不同,则会记录到数据表中,可以通过查询同--CHECKSUM来比较某类型查询的历史变化; --since #从什么时间开始分析,值为字符串,可以是指定的某个"yyyy-mm-dd [hh:mm:ss]"格式的时间点,也可以是简单的一个时间值:s(秒)、h(小时)、m(分钟)、d(天),如12h就表示从12小时前开始统计; --until #截止时间,配合--since可以分析一段时间内的慢查询; --log #指定输出的日志文件; --output #分析结果输出类型,值可以是report(标准分析报告)、slowlog(Mysql slow log)、json、json-anon;一般使用report,以便于阅读; --create-review-table #当使用--review参数把分析结果输出到表中时,如果没有表就自动创建; --create-history-table #当使用--history参数把分析结果输出到表中时,如果没有表就自动创建; 使用举例: 1) pt-query-digest分析慢查询日志; $ pt-query-digest --report slow.log 2) 报告最近半个小时的慢查询; $ pt-query-digest --report --since 1800s slow.log 3) 报告一个时间段的慢查询; $ pt-query-digest --report --since '2019-02-10 21:48:59' --until '2019-02-16 02:33:50' slow.log 4) 报告只含select语句的慢查询; $ pt-query-digest --filter '$event->{fingerprint} =~ m/^select/i' slow.log 5) 报告针对某个用户的慢查询; $ pt-query-digest --filter '($event->{user} || "") =~ m/^root/i' slow.log 6) 报告所有的全表扫描或full join的慢查询; $ pt-query-digest --filter '(($event->{Full_scan} || "") eq "yes") || (($event->{Full_join} || "") eq "yes")' slow.log 7) 把查询保存到query_review表; $ pt-query-digest --user=root –password=123456 --review h=localhost,D=test,t=query_review --create-review-table slow.log 8) 把查询保存到query_history表; $ pt-query-digest --user=root –password=123456 --history h=localhost,D=test,t=query_history --create-history-table slow.log 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_report.log 10) 分析binlog; $ mysqlbinlog mysql-bin.000001 > mysql-bin000001.sql $ pt-query-digest --type=binlog mysql-bin000001.sql > slow_report.log 11) 分析general log; $ pt-query-digest --type=genlog general.log > slow_report.log
pt-query-digest命令帮助汇总和举例
来源:这里教程网
时间:2026-03-01 12:01:45
作者:
编辑推荐:
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- mycat实战(二)-mysql数据库管理
mycat实战(二)-mysql数据库管理
26-03-01 - mysql5.7主从复制说明及配置主从详细步骤
mysql5.7主从复制说明及配置主从详细步骤
26-03-01 - 中国数据库40年发展简史
中国数据库40年发展简史
26-03-01 - CentOS whoami命令详解(Linux新手必学:如何查看当前登录用户)
- 简述MySQL数据删除恢复操作内容
简述MySQL数据删除恢复操作内容
26-03-01 - MySQL分区如何迁移
MySQL分区如何迁移
26-03-01 - mysql的mysql.event和information_schema.events
- MySQL Replication 主从复制全方位解决方案
MySQL Replication 主从复制全方位解决方案
26-03-01 - MyCat的坑如何在分布式中间件DBLE上改善
MyCat的坑如何在分布式中间件DBLE上改善
26-03-01 - 极数云舟签约Codership,成中国地区唯一Galera Cluster技术合作伙伴
