天天看点

MySQL日志分析工具

MySQL的性能从查看日志开始。硬件配置低常常导致这样的问题,但事实上大多数情况并不在这里。某些“慢"SQL阻塞了其他语句的执行,优化查询是第一步需要做的。

    “工欲善其事必先利其器”,MySQL自身的一款mysqldumpslow 查询日志分析器,该工具不但陈旧,验证规范不准确。今天要说的是Percona 的工具pt-query-digest,它能够分析慢查询日志内容,生成查询报告,过滤,重放或传送一些查询语句至MySQL,PostgreSQL,memcached或者其他。

     基本语法:pt-query-digest [OPTION...] [FILE]

     pt-query-digest [OPTION...] [FILE]

     缺点: 对系统资源开销较大(可以将慢查询日志拷贝至其他地方分析)

     举例1(在测试库中进行)、

部分解释如下:

第一行表示分析该日志所使用的时间。该文件中一共拥有515.52k慢查询(测试的情况稍稍多了点。。),其中有240个完全不同类型的查询,在该时间段内每秒处理的查询数量:0.12(关于区别完全不同的查询稍后讨论)

接下来是:

比较严重SQL的分析部分:

其中挑出最为严重的 4个SQL语句,(可以通过参数 --limit 进行设置)它所有语句响应时间总和,调用比例,查询类型等

接下来是单个语句的分析:

可以看到在 在数据库YYY中用户XX 利用该语句查询的响应时间分布图,10S+ 还是很多的。

最后是分析情况:

  # 号部分是分析步骤,最后语句可以再前面 加上 explain 进行复制,进一步分析。

举例二:

    --review 参数

    该参数可以讲分析结果保存在某个数据表中,这样我们可以为查询做出标记,并且当第二次加上 --review 时,如果存在相同的语句分析,就不会记录到数据表中,

表结构如下:

    CREATE TABLE query_review (

   checksum 一个64位校验码对应于finigerprint

   举例:

举例三:

  只收集:select 语句,并将其应用于其他的MySQLserver,并分析出耗时最长的SQL:

(这个可以讲线上的 日志分析出来,并应用于测试的服务器上,模仿线上的真是环境)

举例四:

   将processlist 收集出来 并输出到其他文件:

(这个默认是每秒进行一次连接并记录,可设置,如果连接失败会等待1秒在继续连接)

所有参数 可以通过--help看到。

本文转自 位鹏飞 51CTO博客,原文链接http://blog.51cto.com/weipengfei/953075,如需转载请自行联系原作者