percona-toolkit工具包下载地址:
https://www.percona.com/downloads/percona-toolkit/LATEST/
这里下载的是centos7版本的;
yum install https://www.percona.com/redir/downloads/percona-release/redhat/1.0-13/percona-release-1.0-13.noarch.rpm -y
yum -y install percona-toolkit
重要参数:
--limit,限制输出结果百分比或数量,默认值是20,即将最慢的20条语句输出,如果是50%,则按总响应时间占比从大到小排序,输出总和达50%位置时截止
--since,从什么时间开始分析,值为字符串,可以指定的某个“yyyy-mm-dd[hh:mm:ss]”格式的时间点,也可以是简单的一个时间值:s、h、m、d如12h就表示从12小时前开始统计。
--until,截止时间,配合—since可以分析一段时间内的慢查询。
pt-query-digest --since=24h /root/slow.log >query.log
报告分为三个部分
# 210ms user time, 10ms system time, 29.20M rss, 242.79M vsz
# Current date: Tue Jul 24 15:39:20 2018
# Hostname: redis-slove01
# Files: /root/slow.log
# Overall: 81 total, 13 unique, 0.07 QPS, 0.51x concurrency ______________
# Time range: 2018-07-24 15:01:19 to 15:19:27
# Attribute total min max avg 95% stddev median
# ============ ======= ======= ======= ======= ======= ======= =======
# Exec time 550s 1s 70s 7s 13s 14s 3s
# Lock time 6ms 38us 240us 79us 125us 32us 69us
# Rows sent 503.40k 1 125.64k 6.21k 97.36 26.83k 0.99
# Rows examine 72.56M 30.97k 5.72M 917.28k 3.18M 1.32M 440.37k
# Query size 25.17k 75 1.10k 318.23 563.87 195.85 271.23
这部分介绍了总体统计之后的结果。
Overall:总共有多少条查询,上例总共有81条查询
Time range:查询执行的时间范围(自己做实验,就临时产生的sql)
Unique:唯一查询数量,即对查询条件进行参数化后,总共有多少不同的查询,该实例是13个
Total:总计时间(550s);min:最小时间(1s);max:最大时(70s);avg:平均时间(7s)
95%:把所有值从小到大排列,位置位于95%的那个数一般最具有参考价值
Median:中位数,把所有值从小到大排列,位置位于中间的那个数。
# Profile
# Rank Query ID Response time Calls R/Call V/M
# ==== =============================== ============== ===== ======= =====
# 1 0x92C3EC487801C0224C3C023DE3... 269.3704 48.9% 4 67.3426 0.15 SELECT ex_digitalmoney_account
# 2 0x4CCE3BE62BE9AFA25BD518331C... 54.1828 9.8% 17 3.1872 0.08 SELECT ex_dm_transaction
# 3 0xFBED2222F22E262EF798A3D3A5... 52.9388 9.6% 17 3.1140 0.04 SELECT ex_dm_transaction
# 4 0x9254E595BD408749D5071CD8F0... 37.7808 6.9% 12 3.1484 0.06 SELECT ex_dm_transaction
# 5 0xF5F3218510CA3F3C2350DA75C7... 33.4607 6.1% 15 2.2307 0.07 SELECT ex_dm_transaction
# 6 0x499D9CE19E8FA4C19A92F284A5... 24.6908 4.5% 2 12.3454 0.00 SELECT app_record_log
# 7 0x2BB303DC25C526470098EE2010... 23.9455 4.4% 2 11.9727 0.17 SELECT app_record_log
# 8 0xA5C8706D3FF788B05185807407... 20.4511 3.7% 7 2.9216 0.01 SELECT ex_dm_transaction
# 9 0xE1695DBF3923986367CE33A050... 19.9608 3.6% 1 19.9608 0.00 SELECT app_record_log
# MISC 0xMISC 13.6571 2.5% 4 3.4143 0.0 <4 ITEMS>
Response:总的响应时间。
Time:该查询在本次分析中总的时间占比。
Calls:执行次数,即本次分析总共有多少条这种类型的查询语句。
R/Call:平均每次执行的响应时间。
Item:查询对象,即具体的SQL语句
# Query 1: 0.00 QPS, 0.30x concurrency, ID 0x92C3EC487801C0224C3C023DE3D2A037 at byte 14416
# Scores: V/M = 0.15
# Time range: 2018-07-24 15:01:19 to 15:16:26
# Attribute pct total min max avg 95% stddev median
# ============ === ======= ======= ======= ======= ======= ======= =======
# Count 4 4
# Exec time 48 269s 64s 70s 67s 69s 3s 69s
# Lock time 4 310us 58us 94us 77us 93us 15us 91us
# Rows sent 99 502.55k 125.63k 125.64k 125.64k 123.85k 0 123.85k
# Rows examine 31 22.86M 5.72M 5.72M 5.72M 5.71M 0 5.71M
# Query size 9 2.39k 613 613 613 613 0 613
# String:
# Hosts 192.168.113.68
# Users root
# Query_time distribution
# 1us
# 10us
# 100us
# 1ms
# 10ms
# 100ms
# 1s
# 10s+ ################################################################
# Tables
……
Databases:库名
Users:各个用户执行的次数
Query_time distribution:查询时间分布,长短体现区间占比,这个例子中10s以上查询占有比例最高