pt-query-digest安装使用

原创 2016年08月29日 18:19:25

1.安装

yum install perl-DBI
rpm -ivh MySQL-shared-compat-5.6.31-1.el6.x86_64.rpm
yum install perl-DBD-MySQL
yum install perl-IO-Socket-SSL
yum install perl-Time-HiRes
rpm -ivh perl-TermReadKey-2.30-3.el6.rfx.x86_64.rpm
rpm -ivh percona-toolkit-2.2.19-1.noarch.rpm

需要的rpm包可以从这里下载:http://rpm.pbone.net/


2.使用

[root@iZ25qph95vaZ data]# pt-query-digest slow_queries.log 

第一部分是摘要:
# 390ms USER TIME, 10ms system TIME, 15.67M rss, 105.84M vsz
# CURRENT DATE: Thu DEC 29 13:22:42 2011
# Hostname: test_dx 
# Files: dxdb1-slow.log
# Overall: 776 total, 11 UNIQUE, 0.00 QPS, 0.00x concurrency _____________
# TIME range: 2011-09-10 04:03:19 TO 2011-12-29 05:02:51
# Attribute          total     MIN     MAX     avg     95%  stddev  median
# ============     ======= ======= ======= ======= ======= ======= =======
# EXEC TIME          5657s      2s     33s      7s     23s      6s      5s
# LOCK TIME            33s       0     19s    43ms    98us   715ms    38us
# ROWS sent        323.38k       0 107.36k  426.73    0.99   6.35k       0
# ROWS examine     323.39k       0 107.36k  426.74       0   6.35k       0
# Query SIZE       217.95k      38     562  287.61  420.77   81.78  284.79

从这份摘要中可以看出,dxdb1-slow.log中共有776条SQL语句, 去掉重复(至于怎样才算是重复,下文会有介绍),有11条SQL。
然后又有很多的Attribute和很多的值,比如total(总和),min最小值, max最大值, avg平均值,
95%(*),stddev(不知道是啥,标准差?)和median中位数。
中位数的概念就是把这些值从小到大排序,位置位于最中间的那个数。

在这些值中,最有意义的恐怕就是95%了,与中位数类似,它也是把所有值从小到大排列,位置位于95%的那个数。
它过滤了一些非常大的值,因此更有统计学上的意义,其实统计学上更喜欢用四分位数(1/4, 1/2, 3/4), 中位数也是四分位数之一。

另外,根据SQL语句的不同,可能会有更多的Attribute显示出来。 比如Tmp tables, Tmp disk tbl,Tmp tbl size之类的。


继续看第二部分:

从这份摘要中可以看出,dxdb1-slow.log中共有776条SQL语句, 去掉重复(至于怎样才算是重复,下文会有介绍),有11条SQL。
然后又有很多的Attribute和很多的值,比如total(总和),min最小值, max最大值, avg平均值,
95%(*),stddev(不知道是啥,标准差?)和median中位数。
中位数的概念就是把这些值从小到大排序,位置位于最中间的那个数。

在这些值中,最有意义的恐怕就是95%了,与中位数类似,它也是把所有值从小到大排列,位置位于95%的那个数。
它过滤了一些非常大的值,因此更有统计学上的意义,其实统计学上更喜欢用四分位数(1/4, 1/2, 3/4), 中位数也是四分位数之一。

另外,根据SQL语句的不同,可能会有更多的Attribute显示出来。 比如Tmp tables, Tmp disk tbl,Tmp tbl size之类的。

继续看第二部分:

# Profile
# Rank Query ID           Response TIME   Calls R/CALL Apdx V/M   Item
# ==== ================== =============== ===== ====== ==== ===== ========
#    1 0x4BA72E7D091B848A 4002.9799 70.8%   547 7.3181 0.19  5.57 INSERT test_show
#    2 0x4AE6E5D741E52A10  463.9715  8.2%    57 8.1399 0.12  3.98 INSERT test_?click
#    3 0x120DE9D5CDE2DF8A  455.9982  8.1%    62 7.3548 0.17  5.72 INSERT cpm_pop
#    4 0x88B2139A82CBB181  275.9844  4.9%    34 8.1172 0.24  7.41 INSERT UPDATE test_stat_1
#    5 0x0F6895DB36DE570A  191.5783  3.4%    20 9.5789 0.23  7.96 INSERT UPDATE test_stat_2
#    6 0x30FE5C2032672827   92.1919  1.6%    25 3.6877 0.36  0.59 SHOW TABLE STATUS
#    7 0x40B69AB7631E4445   84.5306  1.5%    13 6.5024 0.15  3.48 SELECT test_show
# MISC 0xMISC               89.7177  1.6%    18 4.9843   NS   0.0 <4 ITEMS>

这一部分显示了最慢的七种类型的SQL语句。
我这里最慢的是INSERT INTO test_show …… 共有547条语句,虽然每次插入的数据都是不同的,但也被归于同一类型的语句了。


第三部分最重要了。
以排名第七的SQL为例。

# Query 7: 0.00 QPS, 0.00x concurrency, ID 0x40B69AB7631E4445 at byte 203205
# Scores: Apdex = 0.15 [1.0]*, V/M = 3.48
# Query_time sparkline: |      ^_|
# TIME range: 2011-11-24 05:02:15 TO 2011-12-10 05:02:43
# Attribute    pct   total     MIN     MAX     avg     95%  stddev  median
# ============ === ======= ======= ======= ======= ======= ======= =======
# COUNT          1      13
# EXEC TIME      1     85s      2s     20s      7s     10s      5s      5s
# LOCK TIME      0     1ms       0   118us    80us   108us    29us    86us
# ROWS sent      0      12       0       1    0.92    0.99    0.26    0.99
# ROWS examine   0      16       0       3    1.23    2.90    1.09    0.99
# Query SIZE     0   1.16k      91      91      91      91       0      91
# String:
# DATABASES    test
# Hosts        dx_web_1
# Users        test_user
# Query_time distribution
#   1us
#  10us
# 100us
#   1ms
#  10ms
# 100ms
#    1s  ################################################################
#  10s+  ###################
# TABLES
#    SHOW TABLE STATUS FROM `test` LIKE 'test_show'\G
#    SHOW CREATE TABLE `test`.`test_show`\G
# EXPLAIN /*!50100 PARTITIONS*/
SELECT COUNT(*) AS modify___c FROM test_show WHERE  ip=1303055780 AND web_id=5 AND ad_id = 4\G

从上面可以看出,共有13条语句,[95%]Exec time是10s,时间长得比较离谱了。数据库为test,主机为dx_web_1,用户名为test_user,然后是query time的分布图,这个图太恶心了,不过也可以看得出来大部分是处于1-10s之间的, 还有一些超过10秒了。

最后是几条SQL语句, 是pt-query-digest生成的,这些语句有助于分析问题。


事实上,pt-query-digest的功能远远不止于此,除了直接分析slow query log并生成报告,它还可以filter, replay, transform queries for mysql,postgresql, memcached!



版权声明:本文为博主原创文章,未经博主允许不得转载。

在windows下用mysql优化工具mysqldumpslow和pt-query-digest

首先,mysqldumpslow和pt-query-digest都是perl脚本文件,要在perl环境下才能运行。 需要:mysql和perl环境。 这两个文件如何获取?mysql完整版内置了...
  • ltx06
  • ltx06
  • 2016年08月13日 20:10
  • 1577

pt-query-digest查询日志分析工具

pt-query-digest 1.  工具简介 pt-query-digest是用于分析mysql慢查询的一个工具,它可以分析binlog、General log、slowlog,也可以通过SHO...
  • seteor
  • seteor
  • 2014年04月18日 14:49
  • 46222

pt-query-digest安装及分析

pt-query-digest:分析      常用选项:  —create-review-table     当使用—review参数,把分析结果输出到表中                   ...

MySQL事件调度器Event Scheduler

MySQL事件调度器

tcpdump&pt-query-digest分析mysql负载性能问题

原文地址: [MySQL运维] 生产数据库性能优化真实案例 http://f.dataguru.cn/forum.php?mod=viewthread&action=printable&tid=3...

mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用

系统性能调优尤其是mysql数据库性能调优一个主要依据就是慢查询日志了。原来在ubantu 或centos 上有一个强大工具就是 percona toolkit,那么在mac 上如何使用pt-quer...

pt-query-digest安装后报错

  • 2015年11月26日 11:37
  • 15KB
  • 下载

使用Anemometer基于pt-query-digest将MySQL慢查询可视化

本文主要介绍使用Anemometer基于pt-query-digest将MySQL慢查询可视化,因为网上资料相对较少,且都是英文的,遇到报错也没有相关的参考资料,因此写此文。 欢迎转...

percona慢查询分析工具:pt-query-digest使用介绍

一、pt-query-digest参数介绍. pt-query-digest --user=anemometer --password=anemometerpass --review h=19...

mysql数据库优化 pt-query-digest使用

一、pt-query-digest工具简介 pt-query-digest是用于分析mysql慢查询的一个工具,它可以分析binlog、General log、slowlog , 也可以通过show...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:pt-query-digest安装使用
举报原因:
原因补充:

(最多只允许输入30个字)