怎么使用pt

63次阅读
没有评论

共计 3206 个字符,预计需要花费 9 分钟才能阅读完成。

这篇文章给大家分享的是有关怎么使用 pt-query-digest 分析日志的内容。丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,一起跟随丸趣 TV 小编过来看看吧。

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 服务器地址
–user mysql 用户名
–password mysql 用户密码
–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 :  查询对象 

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

 由上图可见,1 号查询的详细统计结果,最上面的表格列出了执行次数、最大、最小、平均、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_20140401
pt-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) 分析 binlog
mysqlbinlog mysql-bin.000093 mysql-bin000093.sql
pt-query-digest  –type=binlog  mysql-bin000093.sql slow_report10.log

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

感谢各位的阅读!关于“怎么使用 pt-query-digest 分析日志”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-27发表,共计3206字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)