MySQL · 2016-10-23 0

Percona-Toolkit系列之pt-index-usage多余索引检测利器

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

该工具可以作为参考,可以在库上跑一边,然后将该工具给出的建议人为判断了再做定夺,是否删除索引。