• 技术文章 >数据库 >mysql教程

    实例分析MySQL中pt-query-digest工具的使用记录

    藏色散人藏色散人2022-11-30 17:07:01转载266
    本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了一个用于分析mysql慢查询日志的工具pt-query-digest,下面一起来看一下,希望对大家有帮助。

    一、简介

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

    二、下载并且安装

    > 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

    三、安装完成

    四、分析msql的慢查询日志

    五、结果分析

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

    第二部分:分析

    # 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统计和分析

    # 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 执行期间被

    六 查看偏移

    [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` >= '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: 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主从原理及其在高并发系统中的应用

    专题推荐:慢查询 mysql
    上一篇:MySQL关于Count函数的用法区别总结 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• 面试回答:MySQL每张表最好不超过2000万数据,对不对?• MySQL进阶介绍之索引(总结分享)• MySQL基本操作(CRUD)详解• MySQL关于Count函数的用法区别总结
    1/1

    PHP中文网