From: http://www.livingelsewhere.net/life/note/view/1
Maatkit 分析工具
Maatkit 是 Baron Schwartz 的另一项创造,是一系列命令行工具的集合。所有工具都是用 Perl 编写的,用来补充 MySQL 未能提供的的那些重要功能。可以在 http://www.maatkit.org/ 上找到它们,包括了分析工具和其它一些小功能。
这些分析工具的其中一个是 mk-query-profiler,当它检测服务器状态变量时能够执行查询,并会打印出一个具体且易读的关于查询前后的系统状态变量差异情况的报告。这份报告能使查询有更深的理解,而不仅限于在它执行的时候。
可以将查询通过管道传入 mk-query-profiler 的标准输入口,指定一个或多个查询文件,或者仅仅是要求它检测服务器而不运行任何查询(当运行一个外部应用时,这种方式会用得上)。也能让它运行 shell 命令而不是查询。
mk-query-profiler 的报告分成好几个段落。默认的情况下,这个报告打印出的是一批摘要信息,但是,也可以得到一份包含了每一个查询或者所选择的查询的报告,然后加载到 mk-profile-compact 的辅助工具里方便地进行比较。
以下是这份报告的主要段落:
- 『Overall stats』段罗列了一些基本信息,例如执行时间、命令的数据和网络流量。
- 『Table and index accesses』段显示了这个批处理的有多少个不同类型的执行计划。如果看到有很多表扫描,在可能意味着没有合适的索引可用于查询。
- 『Row operations』段显示了底层处理的数据和/或者个批处理产生的 InnoDB 操作的数目。糟糕的查询计划会引发更多的底层操作。
- 『I/O operations』段显示了这个批处理引发了多少内存和磁盘数据流。有一个可比较的段是显示跟 InnoDB 相关的数据操作。
总而言之,这份报告可以细致地描述出服务器正在处理多少种类型的任务,这比仅仅是衡量查询所需要的时间要有价值得多。例如。可以帮助筛选这样两个查 询:它们在第负载时,在一个小数据集上都用几乎相等的时间完成了查询;但是,当使用到的数据量变到很大的时候,或者说在高负载的时候,它们的表现就有了巨 大的差异。它也可以被用来验证优化是否起到了作用,在这种应用环境下,它就像是一个微型的基准测试工具。
在这个工具里还有另外几种分析工具:
mk-visual-explain
mk-duplicate-key-checker
mk-deadlock-logger
mk-heartbeat
Maatkit 辅助脚本
mk-archiver
mk-find
mk-parallel-dump
mk-parallel-restore
mk-show-grants
mk-slave-delay
mk-slave-prefetch
mk-slave-restart
mk-table-checksum
mk-table-sync