1.pt-index-usage
对于我们已有的生产环境,随着系统运行的时间越长,DML操作越来越慢,这可能和我们最初设计的索引是有关的(变慢的情况很多),项目一旦上线,很少会有人去关注索引的使用情况。某些索引是从create开始就没使用过,这无形中就给mysql增加了维护负担,任何对该表的DML操作,都要算上这些没有被使用的索引一份。pt-index-usage这个工具就是为你检测那些索引一直没有被使用。
它的原理是这样的,通过EXPLAIN慢查询日志中的sql,然后用执行计划和数据库中的索引做对比,看哪些索引没有被利用,然后就建议你删除。个人感觉这样不是特别合理,假如执行计划走偏了,索引没有被用上,这时它也会建议你删除。
2.常用
2.1配置文件
#DNS# host=mysqlhost user=root password=mysqlpasswd port=3306
pt-index-usage --config pt.cnf /data/mysql/logs/slow_queries.log
该工具可以作为参考,可以在库上跑一边,然后将该工具给出的建议人为判断了再做定夺,是否删除索引。