Mysql——》pt-query-digest 不念不忘少年蓝@ 2024-04-01 19:43 33阅读 0赞 > 推荐链接: > [总结——》【Java】][Java] > [总结——》【Mysql】][Mysql] > [总结——》【Spring】][Spring] > [总结——》【SpringBoot】][SpringBoot] > [总结——》【MyBatis、MyBatis-Plus】][MyBatis_MyBatis-Plus] #### Mysql——》pt-query-digest #### * 一、概念 * 二、安装 * * 方法一:通过rpm安装 * 方法二:通过源码安装 * 三、语法 * 四、示例 * * 1、分析全部的慢查询 * 2、分析最近12小时内的慢查询 * 3、分析指定时间范围内的慢查询 * 4、分析只含有select语句的慢查询 * 5、分析指定某个用户的慢查询 * 6、分析所有的全表扫描或full join的慢查询 * 五、输出结果 * * 1、总体统计结果 * 2、查询分组统计结果 * 3:每一种查询的详细统计结果 > [【percona-toolkit官网】pt-query-digest][percona-toolkit_pt-query-digest] ## 一、概念 ## pt-query-digest是用于分析mysql慢查询的一个工具,可以把分析结果输出到文件中,分析过程是先对查询语句的条件进行参数化,然后对参数化以后的查询进行分组统计,统计出各查询的执行时间、次数、占比等,可以借助分析结果找出问题进行优化。 ## 二、安装 ## ### 方法一:通过rpm安装 ### yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm yum install percona-toolkit which pt-query-digest ### 方法二:通过源码安装 ### cd /usr/local/src wget percona.com/get/percona-toolkit.tar.gz tar zxf percona-toolkit.tar.gz cd percona-toolkit-2.2.19 perl Makefile.PL PREFIX=/usr/local/percona-toolkit make && make install ## 三、语法 ## pt-query-digest \[OPTIONS\] \[FILES\] \[DSN\] <table> <thead> <tr> <th>属性</th> <th>描述</th> </tr> </thead> <tbody> <tr> <td>–create-review-table</td> <td>当使用–review参数把分析结果输出到表中时,如果没有表就自动创建。</td> </tr> <tr> <td>–create-history-table</td> <td>当使用–history参数把分析结果输出到表中时,如果没有表就自动创建。</td> </tr> <tr> <td>–filter</td> <td>对输入的慢查询按指定的字符串进行匹配过滤后再进行分析</td> </tr> <tr> <td>–limit</td> <td>限制输出结果百分比或数量,默认值是20,即将最慢的20条语句输出,如果是50%则按总响应时间占比从大到小排序,输出到总和达到50%位置截止。</td> </tr> <tr> <td>–host</td> <td>mysql服务器地址</td> </tr> <tr> <td>–user</td> <td>mysql用户名</td> </tr> <tr> <td>–password</td> <td>mysql用户密码</td> </tr> <tr> <td>–history</td> <td>将分析结果保存到表中,分析结果比较详细,下次再使用–history时,如果存在相同的语句,且查询所在的时间区间和历史表中的不同,则会记录到数据表中,可以通过查询同一CHECKSUM来比较某类型查询的历史变化。</td> </tr> <tr> <td>–review</td> <td>将分析结果保存到表中,这个分析只是对查询条件进行参数化,一个类型的查询一条记录,比较简单。当下次使用–review时,如果存在相同的语句分析,就不会记录到数据表中。</td> </tr> <tr> <td>–output</td> <td>分析结果输出类型,值可以是report(标准分析报告)、slowlog(Mysql slow log)、json、json-anon,一般使用report,以便于阅读。</td> </tr> <tr> <td>–since</td> <td>从什么时间开始分析,值为字符串,可以是指定的某个"yyyy-mm-dd [hh:mm:ss]”格式的时间点,也可以是简单的一个时间值:s(秒)、h(小时)、m(分钟)、d(天),如12h就表示从12小时前开始统计。</td> </tr> <tr> <td>–until</td> <td>截止时间,配合—since可以分析一段时间内的慢查询。</td> </tr> </tbody> </table> ## 四、示例 ## -- 查看慢查询日志的路径:/data/mysql/data/dcbi-3306/log/slow.log show variables like 'slow_query_log_file%'; ![在这里插入图片描述][a23a202a12cc400984b6715d2823563a.png_pic_center] ### 1、分析全部的慢查询 ### pt-query-digest slow.log > slow_report.log ### 2、分析最近12小时内的慢查询 ### pt-query-digest slow.log --since=12h > slow_report.log ### 3、分析指定时间范围内的慢查询 ### pt-query-digest slow.log --since '2017-01-07 09:30:00' --until '2017-01-07 10:00:00' > slow_report.log ### 4、分析只含有select语句的慢查询 ### pt-query-digest slow.log --filter '$event->{fingerprint} =~ m/^select/i' > slow_report.log ### 5、分析指定某个用户的慢查询 ### pt-query-digest slow.log --filter '($event->{user} || "") =~ m/^root/i' > slow_report.log ### 6、分析所有的全表扫描或full join的慢查询 ### pt-query-digest slow.log --filter '(($event->{Full_scan} || "") eq "yes") ||(($event->{Full_join} || "") eq "yes")' > slow_report.log ## 五、输出结果 ## ### 1、总体统计结果 ### # 158.3s user time, 8.1s system time, 329.93M rss, 526.05M vsz # Current date: Thu Nov 17 10:50:50 2022 # Hostname: ejudatamysql-shqstst-1 # Files: slow.log # Overall: 5 total, 5 unique, 0.00 QPS, 0.01x concurrency ________________ # Time range: 2022-11-16T17:00:05 to 2022-11-16T18:22:05 # Attribute total min max avg 95% stddev median # ============ ======= ======= ======= ======= ======= ======= ======= # Exec time 41s 3s 23s 8s 23s 7s 6s # Lock time 1ms 80us 371us 233us 366us 114us 247us # Rows sent 1.78M 0 1.62M 364.03k 1.61M 644.37k 3.35k # Rows examine 3.13M 3.40k 1.62M 640.92k 1.61M 622.68k 298.06k # Query size 2.25k 48 1.05k 461.40 1.04k 417.04 258.32 执行日志分析的用户时间,系统时间,物理内存占用大小,虚拟内存占用大小 Current date:执行时间 Hostname:运行分析工具的主机名 Files:被分析的文件名 Overall:语句总数量,唯一的语句数量,QPS,并发数 Time range:日志的时间范围 属性 总计 最小 最大 平均 95% 标准 中等 Exec time:执行时间 Lock time:锁占用时间 Rows sent:发送到客户端的行数 Rows examine:select语句扫描行数 Query size:查询的字符数 ### 2、查询分组统计结果 ### # Profile # Rank Query ID Response time Calls R/Call V/M # ==== =================================== ============= ===== ======= === # 1 0xCC9D2082C4A06376B87DDAC39F964501 22.7053 55.2% 1 22.7053 0.00 SELECT zhgj_buildings_info # 2 0xB02191120C4512B1F78DAF637002F62E 6.8570 16.7% 1 6.8570 0.00 SELECT house_hub.position_door # 3 0x4C6BD0F9D7F6EF6D743F3548FBE4A10C 5.8865 14.3% 1 5.8865 0.00 DELETE ip_monitor # 4 0x9E6B38A8C7E9F531D052E6D7F73FFAE2 2.8988 7.1% 1 2.8988 0.00 SELECT zhgj_community_info # 5 0x02199972596C7CA130C62FB0DA83AE5A 2.7521 6.7% 1 2.7521 0.00 SELECT region Rank:排名,默认按查询时间降序排列,通过--order-by指定 Query ID:查询语句的ID(去掉多余空格和文本字符,计算hash值) Response time:总的响应时间 time:该查询占总的响应时间比 Calls:该查询执行次数 R/Call:该查询平均每次执行的响应时间 V/M:响应时间Variance-to-mean的比率 ### 3:每一种查询的详细统计结果 ### # Query 1: 0 QPS, 0x concurrency, ID 0xCC9D2082C4A06376B87DDAC39F964501 at byte 11084958563 # Scores: V/M = 0.00 # Time range: all events occurred at 2022-11-16T18:00:27 # Attribute pct total min max avg 95% stddev median # ============ === ======= ======= ======= ======= ======= ======= ======= # Count 20 1 # Exec time 55 23s 23s 23s 23s 23s 0 23s # Lock time 28 338us 338us 338us 338us 338us 0 338us # Rows sent 91 1.62M 1.62M 1.62M 1.62M 1.62M 0 1.62M # Rows examine 51 1.62M 1.62M 1.62M 1.62M 1.62M 0 1.62M # Query size 46 1.05k 1.05k 1.05k 1.05k 1.05k 0 1.05k # String: # Databases house_crawler # Hosts 10.116.147.12 # Users datatech # Query_time distribution # 1us # 10us # 100us # 1ms # 10ms # 100ms # 1s # 10s+ ################################################################ # Tables # SHOW TABLE STATUS FROM `house_crawler` LIKE 'zhgj_buildings_info'\G # SHOW CREATE TABLE `house_crawler`.`zhgj_buildings_info`\G # EXPLAIN /*!50100 PARTITIONS*/ select '2022-11-17 02:00:00',replace(replace(id ,' ',''),' ',''),replace(replace(cityname ,' ',''),' ',''),replace(replace(createdat ,' ',''),' ','') from zhgj_buildings_info\G [Java]: https://blog.csdn.net/weixin_43453386/article/details/84788317 [Mysql]: https://blog.csdn.net/weixin_43453386/article/details/88667709 [Spring]: https://blog.csdn.net/weixin_43453386/article/details/124900806 [SpringBoot]: https://blog.csdn.net/weixin_43453386/article/details/84788714 [MyBatis_MyBatis-Plus]: https://blog.csdn.net/weixin_43453386/article/details/84788053 [percona-toolkit_pt-query-digest]: https://docs.percona.com/percona-toolkit/pt-query-digest.html [a23a202a12cc400984b6715d2823563a.png_pic_center]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/01/e98f59d182d943888a43715829bead41.png
还没有评论,来说两句吧...