搜索
首页数据库mysql教程实例分析MySQL中pt-query-digest工具的使用记录

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了一个用于分析mysql慢查询日志的工具pt-query-digest,下面一起来看一下,希望对大家有帮助。

一、简介

pt-query-digest是用于分析mysql慢查询日志的工具,它还可以分析来自“SHOW PROCESSLIST”和MySQL的查询 tcpdump中的协议数据。我们可以把分析日志输出到指定的文件中,通过分析日志文件做对应的优化等操作。

二、下载并且安装

  • 根据不同的系统安装,我的系统是centos,所以直接选择centos安装,点击下载
  • 直接使用yum安装
> wget https://downloads.percona.com/downloads/percona-toolkit/3.4.0/binary/redhat/7/x86_64/percona-toolkit-3.4.0-3.el7.x86_64.rpm
> yum install percona-toolkit-3.4.0-3.el7.x86_64.rpm
  • 或者使用源码包编译安装
> wget https://downloads.percona.com/downloads/percona-toolkit/3.4.0/source/debian/percona-toolkit-3.4.0.tar.gz
> tar -zxvf percona-toolkit-3.4.0.tar.gz
> cd percona-toolkit-3.4.0
> perl Makefile.PL PREFIX=/usr/local/percona-toolkit
> make && make install

三、安装完成

  • mysql慢查询日志pt-query-digest的使用记录

四、分析msql的慢查询日志

  • pt-query-digest参数可以使用perldoc命令查看
    perldoc /usr/bin/pt-query-digest
  • 分析整个慢日志文件
    pt-query-digest mysql-slow.log > slow_report.log
  • 分析指定时间的日志since~until
    pt-query-digest mysql-slow.log --since '2022-10-01 00:00:00' --until '2022-11-05 00:00:00'  > slow_report_date_20221021-202221105.log
    • –since: 表示开始时间
    • –until: 表示结束时间
  • 分析慢日志,并且保存分析结果到mysql数据表
    pt-query-digest --user=root --password=123456 --history 
    h=192.168.33.10,D=local_test_db,t=query_review --create-history-table  mysql-slow.log  --since 
    '2022-11-01 00:00:00' --until '2022-11-05 00:00:00'
    • –user: 数据库用户名
    • –password: 数据库密码
    • h: 数据库 host
    • D: 数据库名
    • t: 生成的表名

五、结果分析

第一部分: 总的一个分析概况

  • Overall:总共有多少条查询

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

  • unique:唯一查询数量,即对查询条件进行参数化以后,总共有多少个不同的查询

  • total:所有查询总计时长

  • min:所有查询最小时长

  • max:所有查询最大时长

  • avg:所有查询平均时长

  • 95%:把所有时长值从小到大排列,位置位于 95% 的那个时长数,这个数一般最具有参考价值

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

  • # A software update is available:
    
    # 23.7s user time, 15.8s system time, 35.67M rss, 249.01M vsz
    说明:
    执行过程中,在用户中所花费的所有时间
    执行过程中,在内核空间中所花费的所有时间
    pt-query-digest 进程所分配的内存大小
    pt-query-digest 进程所分配的虚拟内存大小
    
    # Current date: Mon Nov  7 09:01:23 2022
    说明:当前时间
    # Hostname: localhost.localdomain
    说明:执行pt-query-digest的主机名
    # Files: mysql-slow.log
    说明:被分析的文件名称
    # Overall: 44.78k total, 54 unique, 0.01 QPS, 0.07x concurrency __________
    说明:
    total: 语句总数量
    unique: 唯一语句数量
    QPS: 每秒查询量
    concurrency: 查询的并发
    
    # Time range: 2022-10-01 00:00:03 to 2022-11-04 16:05:24
    说明:执行过程中日志记录的时间范围
    # Attribute          total     min     max     avg     95%  stddev  median
    说明:属性            总计      最小值   最大值  平均值   95%  标准差   中位数
    95%: 把所有时长值从小到大排列,位置位于 95% 的那个时长数,这个数一般最具有参考价值
    median: 中位数,把所有时长值从小到大排列,位置位于中间那个时长数
    
    # ============     ======= ======= ======= ======= ======= ======= =======
    # Exec time        204553s      3s   1540s      5s     10s      8s      3s
    说明:执行时间
    # Lock time             8s       0   107ms   186us    80us     2ms    36us
    说明:锁占用时间
    # Rows sent        238.87M       0   2.88M   5.46k   11.95  68.22k    0.99
    说明:发送到客户端的行数
    # Rows examine      73.56G       0   5.01M   1.68M   3.86M 724.49k   1.32M
    说明:扫描的语句行数
    # Query size         8.18M      30   4.36k  191.46  511.45  224.63   72.65
    说明:查询的字符数

第二部分:分析

  • Rank:所有语句的排名,默认按查询时间降序排列,通过 –order-by 指定

    • –order-by Query_time:sum :按总的查询时间倒序
      排序参数介绍:
      sum       Sum/total attribute value(默认值)
      min       Minimum attribute value(最小值)
      max       Maximum attribute value(最小值)
      cnt       Frequency/count of the query(按出现sql次数)
  • Query ID:语句的 ID(去掉多余空格和文本字符,计算 hash 值)

  • Response:总的响应时间

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

  • Calls:执行次数,即本次分析总共有多少条这种类型的查询语句

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

  • V/M:响应时间 Variance-to-mean 的比率

  • Item:查询对象

# Profile
说明:分析
# Rank Query ID                            Response time    Calls R/Call  
# ==== =================================== ================ ===== ======= 
#    1 0xC000AA97F210B2AEAE4933AF9B00296A  104236.2061 5... 30988  3.3638  0.03 SELECT xxx
#    2 0x974C6E6D54DB8B0DF505CA7BDC508686  32167.9607 15.7%  3418  9.4113  1.34 SELECT xxx 
#    3 0x6BE180C5804B585F25BB16550447DC6C  18453.0185  9.0%  2499  7.3842  0.92 SELECT xxx
#    4 0xADF16E3E9EB5D6B08245E39FF1428C9F  17873.4338  8.7%  3114  5.7397  0.84 SELECT xxx 
#    5 0x2964CD629A24595719659BDAEBCF0E6F  10648.5404  5.2%  1437  7.4103  0.93 SELECT xxx
#    6 0x50566E6DCF8FA562B88AE41AB1E32DC6   7424.3855  3.6%   303 24.5029 15.41 SELECT xxx
#    7 0xDB0A3D60F85C2212C476B144E1678AB8   5327.8370  2.6%  1627  3.2746  0.05 SELECT xxx
#    8 0x04BB0B332CEED517298AB06DE2A30AD6   3190.6822  1.6%   657  4.8564  1.36 SELECT xxx    
#   10 0xDAB0AF524151C621DC0E9B92AC002C38    526.6288  0.3%   140  3.7616  0.01 SELECT xxx 
# MISC 0xMISC                               1807.1067  0.9%    57 31.7036   0.0 <27 ITEMS>

第三部分:具体的sql统计和分析

  • pct:该 sql 语句某执行属性占所有慢查询语句某执行属性的百分比

  • total:该 sql 语句某执行属性的所有属性时间。

  • Count:sql 语句执行的次数。对应的 pct 表示此 sql 语句执行次数占所有慢查询语句执行次数的 % 比(下图为 69%),对应的 total 表示总共执行了 30988 次。

  • Exec time:sql 执行时间

  • Lock time:sql 执行期间被锁定的时间

  • Rows sent:传输的有效数据,在 select 查询语句中才有值

  • Rows examine:总共查询的数据,非目标数据。

  • Query_time distribution:查询时间分布

  • SQL 语句:下图中为 select sleep(7)\G

# Query 1: 0.01 QPS, 0.03x concurrency, ID 0xC000AA97F210B2AEAE4933AF9B00296A at byte 221452362
说明:查询队列1:每秒查询量,查询的并发,队列1的ID值,对应第二部分的Query ID, 221452362表示偏移量(查看方法看下面的“查看偏移”)
# This item is included in the report because it matches --limit.
# Scores: V/M = 0.03
# Time range: 2022-10-01 00:00:05 to 2022-11-04 16:05:24
说明:sql语句在慢日志文件mysql_slow.log出现的时间范围
# Attribute    pct   total     min     max     avg     95%  stddev  median
说明:属性      占整个 总数      最小值  最大值   平均值  95%   标准差  中间值
           分析中
           的百分
           比                
# ============ === ======= ======= ======= ======= ======= ======= =======
# Count         69   30988
说明:执行语句总数量
# Exec time     50 104236s      3s      7s      3s      4s   303ms      3s
说明:执行时间
# Lock time     24      2s    22us    93ms    65us    66us   775us    38us
说明:锁占用时间
# Rows sent      0  70.53k       0     799    2.33    3.89   16.60    0.99
说明:发送到客户端的行数
# Rows examine  54  40.28G   1.32M   1.35M   1.33M   1.32M  15.65k   1.32M
说明:扫描语句的行数
# Query size    26   2.16M      73      73      73      73       0      73
说明:查询的字符数
# String:
# Hosts        localhost
说明:使用的数据主机IP
# Users        xxx
说明:使用的用户
# Query_time distribution
#   1us
#  10us
# 100us
#   1ms
#  10ms
# 100ms
#    1s  ################################################################
#  10s+
说明:查询时间分布
# Tables
#    SHOW TABLE STATUS LIKE &#39;xxx&#39;\G
#    SHOW CREATE TABLE `xxx`\G
# EXPLAIN /*!50100 PARTITIONS*/
select * from `table_name` where `updated_at` >= &#39;2022-10-15 00:00:40&#39;\G
说明:查询的mysql语句
第三部分是每一种查询比较慢的 sql 的详细统计结果
pct:该 sql 语句某执行属性占所有慢查询语句某执行属性的百分比
total:该 sql 语句某执行属性的所有属性时间。
Count:sql 语句执行的次数。
Exec time:sql 执行时间
Lock time:sql 执行期间被

六 查看偏移

  • 可以利用偏移量在慢查询日志文件中到查找到具体的 SQL 语句,查找方法如下:
[localhost]# tail -c +221452362 ./mysql-slow.log | head
t: root[root] @ localhost []  Id: 13704150
# Query_time: 7.058835  Lock_time: 0.000040 Rows_sent: 2  Rows_examined: 1392521
SET timestamp=1665763267;
select * from `xxxxxx` where `updated_at` >= &#39;2022-10-15 00:00:40&#39;;
# User@Host: root[localhost] @ localhost []  Id: 13704174
# Query_time: 7.445741  Lock_time: 0.000015 Rows_sent: 3  Rows_examined: 2214002
SET timestamp=1665763267;
select xxx from table where xxx
# Time: 221015 008
# User@Host: root[localhost] @ localhost []  Id: 13704414

以上是实例分析MySQL中pt-query-digest工具的使用记录的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:learnku。如有侵权,请联系admin@php.cn删除
MySQL中的存储过程是什么?MySQL中的存储过程是什么?May 01, 2025 am 12:27 AM

存储过程是MySQL中的预编译SQL语句集合,用于提高性能和简化复杂操作。1.提高性能:首次编译后,后续调用无需重新编译。2.提高安全性:通过权限控制限制数据表访问。3.简化复杂操作:将多条SQL语句组合,简化应用层逻辑。

查询缓存如何在MySQL中工作?查询缓存如何在MySQL中工作?May 01, 2025 am 12:26 AM

MySQL查询缓存的工作原理是通过存储SELECT查询的结果,当相同查询再次执行时,直接返回缓存结果。1)查询缓存提高数据库读取性能,通过哈希值查找缓存结果。2)配置简单,在MySQL配置文件中设置query_cache_type和query_cache_size。3)使用SQL_NO_CACHE关键字可以禁用特定查询的缓存。4)在高频更新环境中,查询缓存可能导致性能瓶颈,需通过监控和调整参数优化使用。

与其他关系数据库相比,使用MySQL的优点是什么?与其他关系数据库相比,使用MySQL的优点是什么?May 01, 2025 am 12:18 AM

MySQL被广泛应用于各种项目中的原因包括:1.高性能与可扩展性,支持多种存储引擎;2.易于使用和维护,配置简单且工具丰富;3.丰富的生态系统,吸引大量社区和第三方工具支持;4.跨平台支持,适用于多种操作系统。

您如何处理MySQL中的数据库升级?您如何处理MySQL中的数据库升级?Apr 30, 2025 am 12:28 AM

MySQL数据库升级的步骤包括:1.备份数据库,2.停止当前MySQL服务,3.安装新版本MySQL,4.启动新版本MySQL服务,5.恢复数据库。升级过程需注意兼容性问题,并可使用高级工具如PerconaToolkit进行测试和优化。

您可以使用MySQL的不同备份策略是什么?您可以使用MySQL的不同备份策略是什么?Apr 30, 2025 am 12:28 AM

MySQL备份策略包括逻辑备份、物理备份、增量备份、基于复制的备份和云备份。1.逻辑备份使用mysqldump导出数据库结构和数据,适合小型数据库和版本迁移。2.物理备份通过复制数据文件,速度快且全面,但需数据库一致性。3.增量备份利用二进制日志记录变化,适用于大型数据库。4.基于复制的备份通过从服务器备份,减少对生产系统的影响。5.云备份如AmazonRDS提供自动化解决方案,但成本和控制需考虑。选择策略时应考虑数据库大小、停机容忍度、恢复时间和恢复点目标。

什么是mySQL聚类?什么是mySQL聚类?Apr 30, 2025 am 12:28 AM

MySQLclusteringenhancesdatabaserobustnessandscalabilitybydistributingdataacrossmultiplenodes.ItusestheNDBenginefordatareplicationandfaulttolerance,ensuringhighavailability.Setupinvolvesconfiguringmanagement,data,andSQLnodes,withcarefulmonitoringandpe

如何优化数据库架构设计以在MySQL中的性能?如何优化数据库架构设计以在MySQL中的性能?Apr 30, 2025 am 12:27 AM

在MySQL中优化数据库模式设计可通过以下步骤提升性能:1.索引优化:在常用查询列上创建索引,平衡查询和插入更新的开销。2.表结构优化:通过规范化或反规范化减少数据冗余,提高访问效率。3.数据类型选择:使用合适的数据类型,如INT替代VARCHAR,减少存储空间。4.分区和分表:对于大数据量,使用分区和分表分散数据,提升查询和维护效率。

您如何优化MySQL性能?您如何优化MySQL性能?Apr 30, 2025 am 12:26 AM

tooptimizemysqlperformance,lofterTheSeSteps:1)inasemproperIndexingTospeedUpqueries,2)使用ExplaintplaintoAnalyzeandoptimizequeryPerformance,3)ActiveServerConfigurationStersLikeTlikeTlikeTlikeIkeLikeIkeIkeLikeIkeLikeIkeLikeIkeLikeNodb_buffer_pool_sizizeandmax_connections,4)

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具