pt-query-digest可以通过logs, processlist, 和tcpdump来分析MySQL的查询相关信息,基本语法如下:
pt-query-digest [OPTIONS] [FILES] [DSN]
pt-query-digest是一种用于分析MySQL查询的简单易用的工具,没有之一。它可以分析MySQL慢日志,general LOG和二进制日志的查询。 (二进制日志必须首先转换为文本,通过mysqlbinlog工具)。它也可以使用SHOW PROCESSLIST和来自tcpdump的MySQL协议数据。默认情况下,该工具报告哪个查询最慢,因此最重要的是进行优化。可以通过使用–group-by,–filter和–embedded-attributes等参数来创建更自定义的报告。
pt-query-digest主要有以下几个功能:
(1)使用slow.log来生成统计信息:
pt-query-digest slow.log
(2)从processlist的方式分析生成报告:
pt-query-digest --processlist h=host1
(3)通过tcppdump抓包分析慢查询:
tcpdump -s 65535 -x -nn -q -tttt -i any -c 1000 port 3306 > mysql.tcp.txtpt-query-digest --type tcpdump mysql.tcp.txt
(4)将慢日志查询分析到另一台主机:
pt-query-digest --review h=host2 --no-report slow.log
下面看一下主要参数:
–type 默认为slowlog,参数值可以设置为binlog,genlog,slowlog,tcpdump,rawlog等。
–processlist 通过processlist分析MySQL的满日志查询
–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可以分析一段时间内的慢查询。
下面看一下默认的输出报表相关的信息:
(1)数据统计信息
# 2291.9s user time, 6.4s system time, 41.68M rss, 193.36M vsz# Current date: Mon Jun 19 11:19:51 2017# Hostname: m<a>本文来源gao*daima.com搞@代#码&网6</a>xqmongodb2# Files: /home/mysql/db3306/log/slowlog_343306.log# Overall: 6.72M total, 140 unique, 16.12 QPS, 0.69x concurrency _________# Time range: 2017-06-13T14:34:41 to 2017-06-18T10:22:04# Attribute total min max avg 95% stddev median# ============ ======= ======= ======= ======= ======= ======= =======# Exec time 287519s 1us 20s 43ms 148ms 339ms 214us# Lock time 151259s 0 20s 23ms 144us 319ms 47us# Rows sent 5.40M 0 1000 0.84 0.99 6.58 0.99# Rows examine 388.33M 0 3.72k 60.59 5.75 388.16 0.99# Query size 692.26M 6 799 108.02 202.40 69.96 80.10