0
点赞
收藏
分享

微信扫一扫

pt-query-digest分析慢日志

实施步骤

PT-Tools安装下载:

Percona Toolkit简称pt⼯具—PT-Tools,是Percona公司开发用于管理MySQL的工具,功能包括检查主从复制的数据⼀致性、检查重复索引、定位IO占⽤⾼的表⽂文件、在线DDL等,DBA熟悉掌握后将极⼤提高⼯作效率。

下载地址:

https://www.percona.com/downloads/percona-toolkit/LATEST/

pt-query-digest分析慢日志_mysql

编译安装:

1.下载解压安装包:
@mysql-01 ~]# mv percona-toolkit-3.3.1_x86_64.tar.gz /opt/src/
@mysql-01 ~]# cd /opt/src/
@mysql-01 src]# tar xf percona-toolkit-3.3.1_x86_64.tar.gz -C /usr/local/

2.添加软链接:
@mysql-01 src]# cd /usr/local/
@mysql-01 local]# ln -s /usr/local/percona-toolkit-3.3.1/ /usr/local/percona-toolkit

3.编译安装:
编译前需要安装如下工具
yum install perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker -y

mysql-01 local]# cd percona-toolkit
percona-toolkit]# perl Makefile.PL
percona-toolkit]# make
percona-toolkit]# make install

4.添加环境变量:
echo "export PATH=$PATH:/usr/local/percona-toolkit/bin/" >> /etc/profile
source /etc/profile

5.安装完成验证:
cd /usr/local/percona-toolkit/bin
查看工具是否都存在

pt-query-digest分析慢日志_mysql_02

本文章只使用pt-tools其中的一个工具pt-query-digest(慢查询log分析)

分析慢日志:

使用pt-query-digest之前需要mysql获取慢日志信息

设置mysql慢日志相关配置:

1.开启慢查询:
mysql> show variables like "slow_query_log%";
+---------------------+-----------------------------------------+
| Variable_name       | Value                                   |
+---------------------+-----------------------------------------+
| slow_query_log      | OFF                                     |
| slow_query_log_file | /usr/local/mysql/data/mysql-03-slow.log |
+---------------------+-----------------------------------------+

开启慢日志:
临时开启(重启后回滚):set global slow_query_log=1;
永久开启(配置文件中设置):
在mysql配置文件中添加配置:/etc/my.cnf
    [mysqld]
    slow_query_log=1    #开启慢查询日志
    slow_query_log_file=/usr/local/mysql/data/mysql-slow.log     #设置日志的存放路径和日志名称

mysql> show variables like "slow_query_log%";
+---------------------+-----------------------------------------+
| Variable_name       | Value                                   |
+---------------------+-----------------------------------------+
| slow_query_log      | ON                                      |
| slow_query_log_file | /usr/local/mysql/data/mysql-03-slow.log |
+---------------------+-----------------------------------------+

2.设置慢查询阈值(默认10秒,大于10秒会被记录):
mysql> show variables like '%long_query_time%';
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+

set global long_query_time=5;
mysql> show variables like '%long_query_time%';
+-----------------+----------+
| Variable_name   | Value    |
+-----------------+----------+
| long_query_time | 5.000000 |
+-----------------+----------+

使用 pt-query-digest 分析慢日志

这里创建了些mysql的慢日志sql(过程省略)

1.分析慢日志把结果输出到一个文件中
pt-query-digest mysql-03-slow.log > 1.txt

2.查看分析结果
#第一部分:
3.8s user time, 30ms system time, 27.73M rss, 190.27M vsz
说明:
执行过程中在用户中所花费的所有时间
执行过程中内核空间中所花费的所有时间
pt-query-digest进程所分配的内存大小
pt-query-digest进程所分配的虚拟内存大小

# Current date: Wed Dec 21 11:22:00 2022
说明:当前日期

# Hostname: mysql-03
说明:执行pt-query-digest的主机名

# Files: mysql-03-slow.log
说明:被分析的文件名

# Overall: 37.99k total, 6 unique, 0.01 QPS, 0.64x concurrency
说明:语句总数量,唯一语句数量,每秒查询量,查询的并发

# Time range: 2022-11-01T22:35:40 to 2022-12-14T09:35:46
说明:慢日志中sql记录的时间范围

# Attribute          total     min     max     avg     95%  stddev  median
说明:属性             总计     最小值    最大值   平均值     95%标准差    中位数
# ============     ======= ======= ======= ======= ======= ======= =======
# Exec time        2348723s     18s   1715s     62s     33s    199s     21s
说明:执行时间
# Lock time             2s    25us     6ms    63us   103us    74us    54us
说明:锁占用时间
# Rows sent         35.87k       0       1    0.97    0.99    0.18    0.99
说明:发送到客户端的行数
# Rows examine       2.66T   8.60M  82.04M  73.35M  79.57M   4.51M  72.18M
说明:扫描的语句行数
# Query size         2.43M      36   1.07k   67.04  118.34   39.24   36.69
说明:查询字符大小

#第二部分(主要):
#第二部分记录了慢sql的排行,可用于分析重点慢sql

# Profile
说明:sql概述
# Rank Query ID                            Response time      Calls R/Call

#Rank:语句排名(查询时间降序排列)
#Query ID:语句ID信息
#Response:此类型语句所有执行时间的总和
#time:此类型语句占全部语句时间的百分比
#Calls:执行次数,在分析文件中一共有多少条此类语句
#R/Call:平均查询时间
# ==== =================================== ================== ===== ======
#    1 0x60E5CB3F6F6B0FC197A0663B62F761E9  1426615.3620 60.7%  1267 1125.9790 42.01 UPDATE cert_info
#    2 0x4D6CAF4FA7338A56BE53899410CC0E87   375083.8371 16.0% 12228   30.6742  0.15 SELECT apply_info
#    3 0xB0F23FF617A3DF431D372298545A726B   258933.8613 11.0% 12229   21.1738  0.10 SELECT apply_info
#    4 0xD885005475BFEC049C00334EAFCC3872   251979.5603 10.7% 12228   20.6068  0.10 SELECT cert_info
#    5 0x18DF1FF7336FD00BB6389CD51E8A0859    36110.6256  1.5%    42  859.7768 27.88 SELECT cert_info

#第三部分(主要):
#第三部分详细记录了语句信息
# Query 1: 0.00 QPS, 0.63x concurrency, ID 0x60E5CB3F6F6B0FC197A0663B62F761E9 at byte 6411180
说明:查询队列1:每秒查询量,查询的并发,队列1的ID值

# Scores: V/M = 42.01
# Time range: 2022-11-01T23:01:06 to 2022-11-28T08:27:03
# Attribute    pct   total     min     max     avg     95%  stddev  median
# ============ === ======= ======= ======= ======= ======= ======= =======
# Count          3    1267
# Exec time     60 1426615s     67s   1715s   1126s   1496s    217s   1063s
# Lock time      8   201ms    51us     6ms   158us   925us   366us    66us
# Rows sent      0       0       0       0       0       0       0       0
# Rows examine   3  86.88G   8.60M  74.51M  70.21M  72.18M   3.08M  68.74M
# Query size     5 128.68k     104     104     104     104       0     104
# String:
# Hosts        192.212.139.12 (436/34%)... 2 more
# Users        xxx
# Query_time distribution
#   1us
#  10us
# 100us
#   1ms
#  10ms
# 100ms
#    1s
#  10s+  ################################################################
说明:查询时间分布

# Tables
#    SHOW TABLE STATUS LIKE 'cert_info'\G
#    SHOW CREATE TABLE `cert_info`\G
说明:表名

update cert_info set cert_status = 4 where timestamp(not_after) <= timestamp(NOW()) and cert_status != 3\G
# Converted for EXPLAIN
# EXPLAIN /*!50100 PARTITIONS*/
select  cert_status = 4 from cert_info where  timestamp(not_after) <= timestamp(NOW()) and cert_status != 3\G
说明:语句详细信息定位具体慢sql语句

#以上就是关键分析内容,通过文件信息获取到问题语句,可以对问题语句进行后续优化处理和提供分析报告

参考文档

https://www.percona.com/doc/percona-toolkit/LATEST/pt-query-digest.html

举报

相关推荐

0 条评论