mysql数据库优化 pt

一、pt-query-digest工具简介

pt-query-digest是用于分析mysql慢查询的一个工具,它可以分析binlog、General log、slowlog , 也可以通过show processlist或者通过tcpdump抓去的mysql协议数据来进行分析。可以把分析结果输出到文件中,分析过程是先对查询语句的条件进行参数化,然后对参数化以后的查询进行分组统计,统计出各查询的执行时间、次数、占比等,可以借助分析结果找出问题进行优化。

pt-query-digest [OPTIONS] [FILES] [DSN]

–create-history-table–filter对输入的慢查询按指定的字符串进行匹配过滤后再进行分析–usermysql用户名–passwordmysql用户密码slowlog(Mysql slow log)

三、安装过程

# tar zxvf percona-toolkit-2.2.4.tar.gz# cd percona-toolkit-2.2.4# perl Makefile.PL# make && make test && make install

四、分析慢查询日志

既然是分析慢日志,当然需要开启慢日志查询,并且配置数据库的相关配置,编辑my.cnf

在mysqld下设置如下

long_query_time = 1slow_query_log = onslow_query_log_file = /usr/local/mysql/var/mysql-slow.log

然后重启服务,即可产生慢日志

使用pt-query-digest最简单的方式pt-query-digest mysql-slow.log

总体统计结果如下

Time range: 查询执行的时间范围。unique: 唯一查询数量,即对查询条件进行参数化以后,总共有多少个不同的查询,该例为28。total: 95%: median: 中位数,把所有值从小到大排列,位置位于中间那个数。

查询分组统计结果

由上图可见,这部分对查询进行参数化并分组,然后对各类查询的执行情况进行分析,结果按总执行时长,从大到小排序。Response: 总的响应时间。time: 该查询在本次分析中总的时间占比。calls: 执行次数,即本次分析总共有多少条这种类型的查询语句。R/Call: 平均每次执行的响应时间。Item : 查询对象每部分详细统计结果

Databases: 库名Users: 各个用户执行的次数(占比)Query_time distribution : Tables: 查询中涉及到的表Explain: 示例

用法示例

(1)直接分析慢查询文件:pt-query-digest mysql-slow.log

小时内的查询:

pt-query-digest –since=12hslow.log > slow_report2.log

(3)分析指定时间范围内的查询:

pt-query-digest slow.log–since ‘2014-10-29 09:30:00’ –until ‘2014-11-07 10:00:00’> >slow_report3.log

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.logpt-query-digest –filter ‘(($event->{Full_scan} ||""eq "yes"||(($event->{Full_join} || ""eq "yes"’ slow.log> slow_report6.logpt-query-digest–user=root –password=xxxxxx –review h=127.0.0.1,D=test,t=query_review –create-review-tableslow.log

经历一种身体下了地狱,眼睛进入天堂,灵魂归入故里。

mysql数据库优化 pt

相关文章:

你感兴趣的文章:

标签云: