ITPub博客

首页 > 数据库 > MySQL > MySQL性能剖析工具(pt-query-digest)?

MySQL性能剖析工具(pt-query-digest)?

MySQL 作者:许愿流星1号 时间:2015-12-02 15:20:54 0 删除 编辑

这个工具同样来自percona-toolkit

该工具集合的其他工具

MySQL Slave异常关机的处理 (pt-slave-restart)

http://blog.itpub.net/29254281/viewspace-1183545/

 

验证MySQL主从一致性(pt-table-checksum&pt-table-sync)

http://blog.itpub.net/29254281/viewspace-1208415/

 

 

slow log 设置:

 

 cat my.cnf 

# For advice on how to change settings please see

[mysqld]

#skip-grant-tables

# Remove leading # and set to the amount of RAM for the most important data

# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.

# innodb_buffer_pool_size = 128M

 

 

# Remove leading # to turn on a very important data integrity option: logging

# changes to the binary log between backups.

# log_bin

log_bin=mysql-bin

slow_query_log=on

long_query_time=1

#long_query_time = 1 

slow_query_log = 1 

slow_query_log_file = slow.log 

 

************************************************************

mysql查看:

 

mysql> show variables like "%query%";   

+------------------------------+----------+

| Variable_name                | Value    |

+------------------------------+----------+

| binlog_rows_query_log_events | OFF      |

| ft_query_expansion_limit     | 20       |

| have_query_cache             | YES      |

| long_query_time              | 1.000000 |

| query_alloc_block_size       | 8192     |

| query_cache_limit            | 1048576  |

| query_cache_min_res_unit     | 4096     |

| query_cache_size             | 1048576  |

| query_cache_type             | OFF      |

| query_cache_wlock_invalidate | OFF      |

| query_prealloc_size          | 8192     |

| slow_query_log               | ON       |

| slow_query_log_file          | slow.log |

+------------------------------+----------+

13 rows in set (0.00 sec)

 

 

pt-query-digest:分析

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

                      —create-history-table     但是用—history参数,把分析结果输出到表中

                      —filter     对输入的慢查询按指定的字符串进行匹配过滤后,在进行分析

                      —limit     限制输出结果百分比或数量,默认值是20,即将最慢的20条语句输出

                      —host     HostName

                      —user     用户名

                      —password     密码

                      —history     将分析结果保存到表中,分析结果比较详细

                      —review      将分析结果保存到表中

                      —output     分析结果输出类型

                      —since     从什么时间开始分析,值为字符串

                      —until     截止时间,配合since一起分析

     分析结果:

               

     其中: 

               Overall:总共有多少条查询

               unique:唯一查询数量

               Time range:查询执行的时间范围

               total:总计

               min:最小

               max:最大

               avg:平均

               95%:95%的查询时间,重点分析

               median:中位数,把所有值从小到大排列,位置位于中间那个数

 

     详细的分析结果:

               

               Response:总的响应时间

               time:该查询在本次分析中占用的时间比

               Calls:执行次数

               R/Call:平均每次执行的响应时间

               Item:查询对象

 

          每一条查询的详细分析结果:

               

     ID:查询的ID号,和上图的Query ID对应

     Databases: 数据库名

     Users:执行的用户

     Query_time distribution:查询的时间分布(此图说明,查询几乎都在1ms-10ms之间)

     Tables:查询涉及到的表

     EXPLAIN:SQL语句

 

pt-query-digest安装:

yum -y install perl perl-IO-Socket-SSL perl-DBD-MySQL perl-Time-HiRes

*********

rpm包安装:

rpm -ivh percona-toolkit-2.1.7-1.noarch.rpm

warning: percona-toolkit-2.1.7-1.noarch.rpm: Header V4 DSA/SHA1 Signature, key ID cd2efd2a: NOKEY

Preparing...                ########################################### [100%]

   1:percona-toolkit        ########################################### [100%]

 

 

 

它可以剖析各种日志,从而分析性能问题

包括

1.慢日志(默认)

2.tcpdump

3.general log

4.binlog

5.show processlist

 

实验通过tpcc模拟一定的压力,并开启binlog,general log,slow log和tcpdump收集日志。

关于tpcc参考:http://blog.itpub.net/29254281/viewspace-1195589/

 

1.slow log方式

将slow_query_log设置为on

long_query_time设置为0

重新连接服务器(一般意味着中间件服务器重启)

这样慢日志将记录所有的操作。

 

4.用法示例
(1)直接分析慢查询文件:
pt-query-digest  slow.log > slow_report.log

(2)分析最近12小时内的查询:

pt-query-digest  --since=12h  slow.log > slow_report2.log

 

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

pt-query-digest slow.log --since '2014-04-17 09:30:00' --until '2014-04-17 10:00:00'> > slow_report3.log

 

(4)分析指含有select语句的慢查询

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.log

 

(6) 查询所有所有的全表扫描或full join的慢查询

pt-query-digest--filter '(($event->{Full_scan} || "") eq "yes") ||(($event->{Full_join} || "") eq "yes")' slow.log> slow_report6.log

 

(7)把查询保存到query_review表

pt-query-digest  --user=root –password=abc123 --review  h=localhost,D=test,t=query_review--create-review-table  slow.log

 

(8)把查询保存到query_history表

pt-query-digest  --user=root –password=abc123 --review  h=localhost,D=test,t=query_ history--create-review-table  slow.log_20140401

pt-query-digest  --user=root –password=abc123--review  h=localhost,D=test,t=query_history--create-review-table  slow.log_20140402

 

(9)通过tcpdump抓取mysql的tcp协议数据,然后再分析

tcpdump -s 65535 -x -nn -q -tttt -i any -c 1000 port 3306 > mysql.tcp.txt

pt-query-digest --type tcpdump mysql.tcp.txt> slow_report9.log

 

(10)分析binlog

mysqlbinlog mysql-bin.000093 > mysql-bin000093.sql

pt-query-digest  --type=binlog  mysql-bin000093.sql > slow_report10.log

 

(11)分析general log

pt-query-digest  --type=genlog  localhost.log > slow_report11.log

 

 

 

通过pt-query-digest分析慢日志文件,生成剖析报告

首先是概要信息,包括一共有54.17k个操作,46个语句,平均每秒1.55k查询,剖析报告覆盖的时间等。

概要还包括类似Top SQL的分析

可以从响应时间查看对服务器性能影响最大的SQL,其中R/Call指的是  平均每次执行的响应时间 ResponseTime/Calls

然后就是每条SQL的详细剖析报告,

pct指的是该项占概要报告中的百分比

2.tcpdump方式

因为慢日志方式需要重新连接,而生产环境重启中间件是非常昂贵的操作。

所以在数据库服务器上抓包分析也是一种不错的选择。

pt-query-digest对于抓包有一定的格式。(-x -nn -q -tttt)

-s:源端口

-c:抓包的数量

tcpdump -s 65535 -x -nn -q -tttt -i any -c 100000 port 3306 > test.dmp

在完成抓包采集之后进行分析

pt-query-digest --limit 10 --type tcpdump test.dmp

limit 10 限制显示排名前10的操作

 

其他方式生成的信息会有缺失,可能达不到预期的效果。

而processlist方式实验失败,尚不清楚如何使用这种方式剖析性能。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29893219/viewspace-1851561/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-09-18

  • 博文量
    46
  • 访问量
    430274