推荐Percona Toolkit索引检查工具
2014 年 9 月 2 日
在 《找出mysql中的慢查询》
说到MySQL慢查询日志和mysqldumpslow工具,但它们不会告诉你慢查询的原因,而慢查询大部分是索引使用的问题,那么如何找出有问题的索引呢?
建议大家安装Percona Toolkit工具集,里面有很多不错的工具,今天推荐两款和索引有关的工具。
安装Percona Toolkit工具集
非常简单:
yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm yum install percona-toolkit
pt-duplicate-key-checker
用于检查重复索引,原理很简单,大部分重复索引是以为最左索引导致的,删除重复索引对于更新性能,以及优化内存都很有好处,这个工具会告诉你减少的索引数量和容量:
# Size Duplicate Indexes 206646655 # Total Duplicate Indexes 94
执行非常简单:
pt-duplicate-key-checker -u root ;
pt-index-usage
这个工具用来检查索引使用情况,可以打印报告或将结果导入到表中,供后续分析,不过理解起来有点难,如果是报告方式告之结果,感觉意义不大,考虑到目前我们数据库有重复索引和一些log_queries_not_using_indexes未构建的索引,所以打算等调整后再仔细研究。
顺带说下log_queries_not_using_indexes在慢查询日志中无法和查询慢的语句区分出来,是个小小的遗憾,所以 现在
我是通过人肉分析慢查询日志找出没有使用索引的sql。
在官方文档中,pt-index-usage使用说的不是很明白,所以我贴正确答案,干货满满:
pt-index-usage /data/slow-3306-040611 --database=percona -u root -h127.0.0.1 -p'' --no-report --empty-save-results-tables --save-results-database=127.0.0.1
其中—database表示将结果导出到那个库中;—no-report表示不打印报告;—empty-save-results-tables表示每次清空percona库中的数据,-save-results-database表示将结果导入到那个数据库实例中。
注意在运行之前,先手动创建percona库。