推荐链接:
    总结——》【Java】
    总结——》【Mysql】
    总结——》【Spring】
    总结——》【SpringBoot】
    总结——》【MyBatis、MyBatis-Plus】

Mysql——》pt-query-digest

  • 一、概念
  • 二、安装
    • 方法一:通过rpm安装
    • 方法二:通过源码安装
  • 三、语法
  • 四、示例
    • 1、分析全部的慢查询
    • 2、分析最近12小时内的慢查询
    • 3、分析指定时间范围内的慢查询
    • 4、分析只含有select语句的慢查询
    • 5、分析指定某个用户的慢查询
    • 6、分析所有的全表扫描或full join的慢查询
  • 五、输出结果
    • 1、总体统计结果
    • 2、查询分组统计结果
    • 3:每一种查询的详细统计结果

【percona-toolkit官网】pt-query-digest

一、概念

pt-query-digest是用于分析mysql慢查询的一个工具,可以把分析结果输出到文件中,分析过程是先对查询语句的条件进行参数化,然后对参数化以后的查询进行分组统计,统计出各查询的执行时间、次数、占比等,可以借助分析结果找出问题进行优化。

二、安装

方法一:通过rpm安装

yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
yum install percona-toolkit
which pt-query-digest

方法二:通过源码安装

cd /usr/local/src
wget percona.com/get/percona-toolkit.tar.gz
tar zxf percona-toolkit.tar.gz
cd percona-toolkit-2.2.19
perl Makefile.PL PREFIX=/usr/local/percona-toolkit
make && make install

三、语法

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

属性 描述
–create-review-table 当使用–review参数把分析结果输出到表中时,如果没有表就自动创建。
–create-history-table 当使用–history参数把分析结果输出到表中时,如果没有表就自动创建。
–filter 对输入的慢查询按指定的字符串进行匹配过滤后再进行分析
–limit 限制输出结果百分比或数量,默认值是20,即将最慢的20条语句输出,如果是50%则按总响应时间占比从大到小排序,输出到总和达到50%位置截止。
–host mysql服务器地址
–user mysql用户名
–password mysql用户密码
–history 将分析结果保存到表中,分析结果比较详细,下次再使用–history时,如果存在相同的语句,且查询所在的时间区间和历史表中的不同,则会记录到数据表中,可以通过查询同一CHECKSUM来比较某类型查询的历史变化。
–review 将分析结果保存到表中,这个分析只是对查询条件进行参数化,一个类型的查询一条记录,比较简单。当下次使用–review时,如果存在相同的语句分析,就不会记录到数据表中。
–output 分析结果输出类型,值可以是report(标准分析报告)、slowlog(Mysql slow log)、json、json-anon,一般使用report,以便于阅读。
–since 从什么时间开始分析,值为字符串,可以是指定的某个"yyyy-mm-dd [hh:mm:ss]”格式的时间点,也可以是简单的一个时间值:s(秒)、h(小时)、m(分钟)、d(天),如12h就表示从12小时前开始统计。
–until 截止时间,配合—since可以分析一段时间内的慢查询。

四、示例

 -- 查看慢查询日志的路径:/data/mysql/data/dcbi-3306/log/slow.logshow variables like 'slow_query_log_file%';

1、分析全部的慢查询

pt-query-digest slow.log > slow_report.log

2、分析最近12小时内的慢查询

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

3、分析指定时间范围内的慢查询

pt-query-digest slow.log --since '2017-01-07 09:30:00' --until '2017-01-07 10:00:00' > slow_report.log

4、分析只含有select语句的慢查询

pt-query-digest slow.log --filter '$event->{fingerprint} =~ m/^select/i' > slow_report.log

5、分析指定某个用户的慢查询

pt-query-digest slow.log --filter '($event->{user} || "") =~ m/^root/i' > slow_report.log

6、分析所有的全表扫描或full join的慢查询

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

五、输出结果

1、总体统计结果

# 158.3s user time, 8.1s system time, 329.93M rss, 526.05M vsz
# Current date: Thu Nov 17 10:50:50 2022
# Hostname: ejudatamysql-shqstst-1
# Files: slow.log
# Overall: 5 total, 5 unique, 0.00 QPS, 0.01x concurrency ________________
# Time range: 2022-11-16T17:00:05 to 2022-11-16T18:22:05
# Attribute          total     min     max     avg     95%  stddev  median
# ============     ======= ======= ======= ======= ======= ======= =======
# Exec time            41s      3s     23s      8s     23s      7s      6s
# Lock time            1ms    80us   371us   233us   366us   114us   247us
# Rows sent          1.78M       0   1.62M 364.03k   1.61M 644.37k   3.35k
# Rows examine       3.13M   3.40k   1.62M 640.92k   1.61M 622.68k 298.06k
# Query size         2.25k      48   1.05k  461.40   1.04k  417.04  258.32执行日志分析的用户时间,系统时间,物理内存占用大小,虚拟内存占用大小Current date:执行时间
Hostname:运行分析工具的主机名
Files:被分析的文件名
Overall:语句总数量,唯一的语句数量,QPS,并发数
Time range:日志的时间范围属性               总计      最小    最大    平均    95%  标准    中等Exec time:执行时间
Lock time:锁占用时间
Rows sent:发送到客户端的行数
Rows examine:select语句扫描行数
Query size:查询的字符数

2、查询分组统计结果

# Profile
# Rank Query ID                            Response time Calls R/Call  V/M
# ==== =================================== ============= ===== ======= ===
#    1 0xCC9D2082C4A06376B87DDAC39F964501  22.7053 55.2%     1 22.7053  0.00 SELECT zhgj_buildings_info
#    2 0xB02191120C4512B1F78DAF637002F62E   6.8570 16.7%     1  6.8570  0.00 SELECT house_hub.position_door
#    3 0x4C6BD0F9D7F6EF6D743F3548FBE4A10C   5.8865 14.3%     1  5.8865  0.00 DELETE ip_monitor
#    4 0x9E6B38A8C7E9F531D052E6D7F73FFAE2   2.8988  7.1%     1  2.8988  0.00 SELECT zhgj_community_info
#    5 0x02199972596C7CA130C62FB0DA83AE5A   2.7521  6.7%     1  2.7521  0.00 SELECT regionRank:排名,默认按查询时间降序排列,通过--order-by指定
Query ID:查询语句的ID(去掉多余空格和文本字符,计算hash值)
Response time:总的响应时间
time:该查询占总的响应时间比
Calls:该查询执行次数
R/Call:该查询平均每次执行的响应时间
V/M:响应时间Variance-to-mean的比率

3:每一种查询的详细统计结果

# Query 1: 0 QPS, 0x concurrency, ID 0xCC9D2082C4A06376B87DDAC39F964501 at byte 11084958563
# Scores: V/M = 0.00
# Time range: all events occurred at 2022-11-16T18:00:27
# Attribute    pct   total     min     max     avg     95%  stddev  median
# ============ === ======= ======= ======= ======= ======= ======= =======
# Count         20       1
# Exec time     55     23s     23s     23s     23s     23s       0     23s
# Lock time     28   338us   338us   338us   338us   338us       0   338us
# Rows sent     91   1.62M   1.62M   1.62M   1.62M   1.62M       0   1.62M
# Rows examine  51   1.62M   1.62M   1.62M   1.62M   1.62M       0   1.62M
# Query size    46   1.05k   1.05k   1.05k   1.05k   1.05k       0   1.05k
# String:
# Databases    house_crawler
# Hosts        10.116.147.12
# Users        datatech
# Query_time distribution
#   1us
#  10us
# 100us
#   1ms
#  10ms
# 100ms
#    1s
#  10s+  ################################################################
# Tables
#    SHOW TABLE STATUS FROM `house_crawler` LIKE 'zhgj_buildings_info'\G
#    SHOW CREATE TABLE `house_crawler`.`zhgj_buildings_info`\G
# EXPLAIN /*!50100 PARTITIONS*/
select '2022-11-17 02:00:00',replace(replace(id                ,'
',''),'
',''),replace(replace(cityname          ,'
',''),'
',''),replace(replace(createdat         ,'
',''),'
','') from zhgj_buildings_info\G

Mysql——》pt-query-digest相关推荐

  1. 读薄《高性能MySql》(四)查询性能优化

    读薄<高性能MySql>(一)MySql基本知识 读薄<高性能MySql>(二)Scheme与数据优化 读薄<高性能MySql>(三)索引优化 读薄<高性能M ...

  2. mysql优化之query优化

    主要概述:在 MySQL 中有一个专门负责优化 SELECT 语句的优化器模块,这就是我们本节将要重点分析的 MySQL Optimizer,其主要的功能就是通过计算分析系统中收集的各种统计信息,为客 ...

  3. 《高性能MySQL》——架构与历史(笔记)

    文章目录 一.MySQL架构与历史 1.1.1 连接管理与安全性 1.1.2 优化与执行 1.2 并发控制 1.2.1 读写锁 1.2.2 锁粒度(锁模式) 表锁(table lock) 行级锁(ro ...

  4. 《高性能MySQL》——服务器性能剖析(笔记)

    文章目录 三.服务器性能剖析 3.1 性能优化简介 3.1.1 通过性能剖析进行优化 3.1.2 理解性能剖析 3.2 对应用程序进行性能剖析 3.3 剖析MySQL查询 3.3.1 剖析服务器负载 ...

  5. 《高性能MySQL》——MySQL基准测试(笔记)

    文章目录 二.MySQL基准测试 2.1 为什么需要基准测试 2.2 基准测试的策略 2.2.1 测试何种指标 2.3 基准测试方法 2.3.1设计和规划基准测试 2.3.2 基准测试应该运行多长时间 ...

  6. mysql 树形结构_再读MySQL索引-《高性能MySQL》索引手记

    最近工作中经常和MySQL打交道,当数据量小的时候,不同查询方式以及是否使用索引并无大碍,当数据量随着业务的成长急剧加速时,索引的重要性不言而喻. 本篇文章以<高性能MySQL>中的索引章 ...

  7. 《深入浅出Mysql》學習筆記--日志

    四种日志 错误日志 二进制日志 慢查询日志 查询日志 1. 错误日志(.err) 严重错误信息记录 more x.err 2. 二进制日志(binlog) 记录DDL,DML(select除外) 用于 ...

  8. python3 mysql错误 pymysql.err.OperationalError: (2013, 'Lost connection to MySQL server during query')

    pymysql错误: pymysql.err.OperationalError: (2013, 'Lost connection to MySQL server during query') pymy ...

  9. 《高可用MySQL》2 – 单机版MySQL主从配置

    这里搭建的主从是最简单的单一主从复制(即一个Master和一个slave.没有不论什么的热机备份和多slave),该主从结构的基本拓扑图例如以下所看到的: 建立主要的主从复制能够总结为下面三个基本步骤 ...

最新文章

  1. 【新星计划】MATLAB绘制图形
  2. Spring Boot 自动配置原理
  3. opencv3.2.0 Cmake 3.8.0 + tdm-gcc-5.1.0-3
  4. excel实战应用案例100讲(十三)-使用Python 对 Excel文件进行批量操作
  5. 【1】MySQL的四种事务隔离级别
  6. Django模板层:内置模板标签if,for in(forloop.counter)with,url,spaceless,autoescape,verbatim,firstof,block,cycle
  7. Python批量提取Excel文件中的图片
  8. JAVA正则表达式及常用类
  9. loss值多少才算收敛_你了解TDS值是多少才是合格的吗?
  10. php缩略图 实例,php生成缩略图后填充白边的代码示例
  11. FLASK安装--兼收EZ_INSTALL及PIP
  12. 虚拟机出现ping DUP
  13. 小米6X 线刷兼救砖_解账户锁_纯净刷机包_教程
  14. Github删除历史提交记录的方法
  15. 从微软CEO纳德拉身上学习如何拯救一个企业
  16. xml 硕正报表_主要指标及功能清单
  17. 视易服务器系统装,windows2000视易星云点歌数据服务器安装方法和步骤.docx
  18. ERP系统模块完全解析──主生产计划MPS
  19. 江苏省徐州市科目三考场分析
  20. 【职场进阶】入职没有几天就离职是什么心态?

热门文章

  1. python itertools功能详解
  2. PYTHION知识总结和assert利用剑蚁登录
  3. 《计算机网络——自顶向下方法》精炼——1.4到1.7
  4. 免费软件真的免费吗?
  5. 实例9:实现根据身高计算标准体重
  6. 绝缘栅双极晶体管IGBT
  7. 怎样买到最便宜的机票
  8. 如何修复 HTML 中的乱码
  9. 缓存框架——Redis的哨兵机制
  10. 五一期间股票池中的股票