文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

mysql中的pt-query-digest命令有什么用

2024-04-02 19:55

关注

这篇文章将为大家详细讲解有关mysql中的pt-query-digest命令有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

pt-query-digest是用于分析mysql慢查询的一个工具,它可以分析binlog、General log、slowlog,也可以通过show processlist命令或者通过tcpdump

抓取的MySQL协议数据来进行分析。可以把分析结果输出到文件中,分析过程是先对查询语句的条件进行参数化,然后对参数化以后的查询进行分组

统计,统计出各查询的执行时间、次数、占比等,可以借助分析结果找出问题进行优化。默认情况下,该工具分析slow log并会报告哪个查询最慢。

查看帮助:

$ pt-query-digest --help

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

--host      #指定MySQL地址;

--port      #指定MySQL端口;

--socket    #指定MySQL SOCK文件;

--user      #指定MySQL用户;

--password  #指定MySQL密码;

--type      #指定将要分析的类型,默认是slowlog,还有如binlog,general log等;

--charset   #指定字符集;

--filter    #对输入的慢查询按指定的字符串进行匹配过滤后再进行分析;

--limit     #限制输出结果百分比或数量,默认值是20,即将最慢的20条语句输出,如果是50%则按总响应时间占比从大到小排序,输出到总和达到50%位置截止;

--review    #将分析结果保存到表中,这个分析只是对查询条件进行参数化,一个类型的查询一条记录,比较简单;当下次使用--review时,如果存在相同的语句分析,就不会记录到数据表中;

--history   #将分析结果保存到表中,分析结果比较详细,下次再使用--history时,如果存在相同的语句,且查询所在的时间区间和历史表中的不同,则会记录到数据表中,可以通过查询同--CHECKSUM来比较某类型查询的历史变化;

--since     #从什么时间开始分析,值为字符串,可以是指定的某个"yyyy-mm-dd [hh:mm:ss]"格式的时间点,也可以是简单的一个时间值:s(秒)、h(小时)、m(分钟)、d(天),如12h就表示从12小时前开始统计;

--until     #截止时间,配合--since可以分析一段时间内的慢查询;

--log       #指定输出的日志文件;

--output    #分析结果输出类型,值可以是report(标准分析报告)、slowlog(Mysql slow log)、json、json-anon;一般使用report,以便于阅读;

--create-review-table     #当使用--review参数把分析结果输出到表中时,如果没有表就自动创建;

--create-history-table    #当使用--history参数把分析结果输出到表中时,如果没有表就自动创建;

使用举例:

1) pt-query-digest分析慢查询日志;

$ pt-query-digest --report slow.log

2) 报告最近半个小时的慢查询;

$ pt-query-digest --report --since 1800s slow.log

3) 报告一个时间段的慢查询;

$ pt-query-digest --report --since '2019-02-10 21:48:59' --until '2019-02-16 02:33:50' slow.log

4) 报告只含select语句的慢查询;

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

5) 报告针对某个用户的慢查询;

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

6) 报告所有的全表扫描或full join的慢查询;

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

7) 把查询保存到query_review表;

$ pt-query-digest --user=root –password=123456 --review h=localhost,D=test,t=query_review --create-review-table slow.log

8) 把查询保存到query_history表;

$ pt-query-digest --user=root –password=123456 --history  h=localhost,D=test,t=query_history --create-history-table slow.log

9) 通过tcpdump抓取mysql的tcp协议数据,然后再分析;

$ tcpdump -s 65535 -x -nn -q -tttt -i any -c 1000 port 3306 > mysql_tcp.txt

$ pt-query-digest --type tcpdump mysql.tcp.txt > slow_report.log

10) 分析binlog;

$ mysqlbinlog mysql-bin.000001 > mysql-bin000001.sql

$ pt-query-digest --type=binlog mysql-bin000001.sql > slow_report.log

11) 分析general log;

$ pt-query-digest --type=genlog general.log > slow_report.log

关于“mysql中的pt-query-digest命令有什么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯