实例分析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: 数据库 hostD: 数据库名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 值)

黑点工具 黑点工具

在线工具导航网站,免费使用无需注册,快速使用无门槛。

黑点工具 18 查看详情 黑点工具

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 

第三部分:具体的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 'xxx'G#    SHOW CREATE TABLE `xxx`G# EXPLAIN /*!50100 PARTITIONS*/select * from `table_name` where `updated_at` >= '2022-10-15 00:00:40'G说明:查询的mysql语句第三部分是每一种查询比较慢的 sql 的详细统计结果pct:该 sql 语句某执行属性占所有慢查询语句某执行属性的百分比total:该 sql 语句某执行属性的所有属性时间。Count:sql 语句执行的次数。Exec time:sql 执行时间Lock time:sql 执行期间被

六 查看偏移

可以利用偏移量在慢查询日志文件中到查找到具体的 SQL 语句,查找方法如下:

[localhost]# tail -c +221452362 ./mysql-slow.log | headt: root[root] @ localhost []  Id: 13704150# Query_time: 7.058835  Lock_time: 0.000040 Rows_sent: 2  Rows_examined: 1392521SET timestamp=1665763267;select * from `xxxxxx` where `updated_at` >= '2022-10-15 00:00:40';# User@Host: root[localhost] @ localhost []  Id: 13704174# Query_time: 7.445741  Lock_time: 0.000015 Rows_sent: 3  Rows_examined: 2214002SET timestamp=1665763267;select xxx from table where xxx# Time: 221015 008# User@Host: root[localhost] @ localhost []  Id: 13704414

以上就是实例分析MySQL中pt-query-digest工具的使用记录的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/351839.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
《弹弹星球》兑换码使用方法
上一篇 2025年11月5日 22:40:29
俄罗斯引擎无需登录直接使用入口 yandex俄罗斯引擎无需登录网址
下一篇 2025年11月5日 22:40:40

相关推荐

  • 开源免费PHP工具 PHP开发效率提升利器

    推荐开源免费PHP开发工具以提升效率:VS Code、Sublime Text轻量高效,PhpStorm专业强大;调试用Xdebug、Kint、Ray;依赖管理选Composer;代码质量工具包括PHPStan、Psalm、PHP_CodeSniffer;数据库管理可用%ignore_a_1%MyA…

    2026年5月10日
    000
  • MySQL数据库不支持中文的解决办法

    接上一篇文章,在解决了mysql+flask环境配置问题之后,往数据库存中文字符串会报1366错误,提示不正确的字符。继而发现默认的mysql采用了latin1字符集,这种编码是不支持中文的。 如果想支持中文的话,需要设置一下mysql字符集。 众所周知utf-8是可以的,gbk也没问题,为了可扩展…

    用户投稿 2026年5月10日
    000
  • Go语言连接外部MySQL数据库:DSN配置与常见错误解析

    本文详细阐述了go语言使用`go-sql-driver/mysql`驱动连接外部mysql数据库的正确方法。重点介绍了数据源名称(dsn)的规范格式,特别是主机地址部分的配置,以避免常见的“getaddrinfow: the specified class was not found.”等网络解析错…

    2026年5月10日
    000
  • 后缀php怎么打开_php文件打开方式与运行环境搭建指南

    要打开PHP文件需根据用途选择方式:查看代码可用文本编辑器或IDE,运行则需服务器环境。推荐新手使用XAMPP、WAMP等集成环境,将文件放入htdocs目录后访问localhost;开发者可利用PHP内置服务器,命令行执行php -S localhost:8000运行;高级用户可手动配置Apach…

    2026年5月10日
    000
  • PHP动态网页数据库备份恢复_PHP动态网页MySQL数据库备份教程

    答案:PHP动态网页的MySQL数据库备份与恢复需通过定期导出SQL文件并安全存储来保障数据安全,核心方法包括使用mysqldump命令行工具实现高效灵活的自动化备份,利用phpMyAdmin图形化工具进行手动导出导入以降低操作门槛,以及通过PHP脚本调用系统命令将备份过程集成到应用中;恢复时可采用…

    2026年5月10日
    000
  • php登录怎么实现_php用户登录系统完整实现

    <blockquote>PHP用户登录系统的核心是安全验证与会话管理。首先创建POST提交的登录表单,避免敏感信息暴露;后端通过session_start()启动会话,使用trim()和htmlspecialchars()清理输入,防止XSS攻击;利用PDO预处理语句查询数据库,防止SQ…

    用户投稿 2026年5月10日
    000
  • 远程MySQL数据库连接指南:从本地PHP应用访问GCP实例数据库

    本文详细指导如何在本地php应用中连接到google cloud platform (gcp) 虚拟机实例上的远程mysql数据库。教程涵盖了数据库连接参数的配置、使用php pdo建立连接的方法、gcp环境下的网络配置要点,以及常见的安全和故障排除建议,旨在帮助开发者顺利实现跨环境的数据库通信。 …

    2026年5月10日
    000
  • 在PHP中实现MySQL数据插入时避免重复记录的策略

    本文将探讨在php应用中向mysql数据库插入数据时,如何有效避免重复记录的产生。针对当主键或唯一索引字段值已存在的情况,我们将介绍使用`insert ignore`语句的策略,以确保数据完整性并防止不必要的重复插入,从而简化数据管理逻辑。 引言:数据完整性与重复记录问题 在数据库管理中,数据完整性…

    2026年5月10日
    000
  • php实现哪些功能

    PHP是一种通用脚本语言,可用来实现广泛的功能,包括:动态Web开发:生成响应用户请求的动态 веб页面。内容管理系统(CMS):构建允许用户管理网站内容的CMS。电子商务:开发具有购物车、订单处理和支付网关集成的电子商务网站。服务器端编程:编写命令行脚本和工具。文件操作:创建、读取、写入和删除文件…

    2026年5月10日
    000
  • PHP 动态 SQL WHERE 子句构建:避免重复 AND 的策略

    本文探讨了在 php 中动态构建 sql 查询 `where` 子句时常见的“`where and`”语法错误及其解决方案。通过逐步构建条件字符串,确保第一个条件不带 `and`,后续条件正确使用 `and` 连接,从而生成符合 sql 规范的查询语句,提高代码的健壮性和可读性。 动态构建 SQL …

    2026年5月10日
    200
  • PHP中基于用户角色的页面访问控制实践

    本教程详细讲解如何在PHP应用程序中利用会话(Session)机制实现基于用户角色的页面访问控制。通过正确的session_start()调用、用户登录时的角色信息存储,以及在受保护页面进行严格的会话和角色类型检查,确保只有特定用户(如“manager”)才能访问指定页面,从而有效防止未经授权的访问…

    2026年5月10日
    100
  • php数据库触发器应用实例_php数据库自动化任务的处理

    通过MySQL触发器与PHP结合,可在数据变更时自动记录日志、校验数据及同步状态。首先创建user_log表并定义AFTER INSERT/UPDATE/DELETE触发器,记录users表的操作信息;随后使用PHP的PDO执行增删改操作,验证日志生成;接着创建BEFORE INSERT触发器限制非…

    2026年5月10日
    000
  • php数据库数据压缩处理_php数据库存储空间优化方法

    可通过启用MySQL行压缩、PHP层数据压缩、优化字段结构及分表归档策略减少存储占用。具体步骤:1. 使用InnoDB压缩表并设置KEY_BLOCK_SIZE;2. PHP中用gzcompress压缩大数据字段,存为BLOB;3. 选用更小数据类型如TINYINT,避免冗余TEXT;4. 将历史数据…

    2026年5月10日
    000
  • php数据整理怎么按日期字段分组汇总_php按日期分组统计与时间段合并技巧

    可使用SQL或PHP对数据按日期分组汇总。1、通过MySQL的DATE()、YEAR()、MONTH()函数在查询时按日、月、年分组统计;2、在PHP中遍历数组,以date(‘Y-m-d’)等格式化日期作为键进行归类;3、按周可使用date(‘o-W’…

    2026年5月10日
    000
  • php数据库如何实现全文搜索 php数据库搜索引擎的构建方法

    答案:在PHP项目中实现数据库全文搜索需利用MySQL的FULLTEXT索引功能,通过PDO预处理语句执行MATCH()…AGAINST()查询,结合PHP过滤用户输入以防止SQL注入;为提升体验可引入中文分词、权重排序、结果高亮等优化措施;数据量增长后可迁移至Elasticsearch…

    2026年5月10日
    000
  • php调用数据同步方案_php调用多数据库数据同步

    首先明确同步需求与模式,如单向、双向、定时或实时同步;接着使用PHP通过PDO连接多数据库,基于时间戳或增量ID同步变更数据,并记录同步状态;为提高可靠性,可引入消息队列、binlog解析、中间同步层及加锁机制;最后注意网络超时、分页处理、错误重试、日志记录与测试验证,确保数据一致性与系统稳定性。 …

    2026年5月10日
    000
  • php怎么安装_在云服务器上部署PHP环境的步骤

    答案:在云服务器上部署PHP环境需搭建LEMP栈(Linux+Nginx+MySQL+PHP-FPM),依次更新系统、安装Nginx、MariaDB、PHP-FPM及扩展,配置Nginx解析PHP并测试,最后通过权限控制、安全配置、防火墙和HTTPS等措施保障环境安全稳定。 在云服务器上部署PHP环…

    2026年5月10日
    000
  • 使用MySQL和PHP高效获取最热门数据条目:统计与排序实践

    本教程详细阐述如何利用mysql的聚合函数和php的mysqli扩展,高效地从数据库中查询并排序出最常出现的数据条目。文章将通过一个具体的案例,指导读者构建正确的sql查询,并结合php进行数据处理和调试,避免常见的sql语法错误和php运行时问题,从而准确获取按频率降序排列的热门数据。 在Web开…

    2026年5月10日
    000
  • SQL查询:精确判断事件过期,结合日期与时间列

    本文旨在解决数据库中事件过期判断不精确的问题,特别是当事件的过期日期和时间分别存储在不同列时。我们将探讨两种主流的sql查询策略:一种是利用逻辑运算符`or`和`and`进行分情况判断,另一种是通过合并日期和时间列为单一时间戳进行直接比较。文章将详细阐述每种方法的实现方式、适用场景及相关注意事项,确…

    2026年5月10日
    100
  • HTML表单如何实现白名单功能?怎样只允许授权用户?

    要实现%ignore_a_1%的白名单功能并确保只有授权用户操作,核心答案是必须依赖后端服务器进行严格的身份认证、会话管理、授权检查和数据验证,前端仅能提供用户体验层面的初步提示而不能保障安全;具体而言,首先通过用户身份认证(如用户名/密码或oauth)确认用户身份,服务器创建会话并返回标识符,后续…

    2026年5月10日
    800

发表回复

登录后才能评论
关注微信