【问题标题】:How do you identify unused indexes in a MySQL database?如何识别 MySQL 数据库中未使用的索引?
【发布时间】:2011-03-15 16:22:10
【问题描述】:

我最近完全重写了一个大型项目。在这样做的过程中,我整合了大量的随机 MySQL 查询。我确实记得在开发以前的代码库的过程中,我一时兴起创建了索引,而且我确信有很多不再使用了。

有没有办法监控 MySQL 的索引使用情况,以确定哪些索引正在使用,哪些没有?

【问题讨论】:

    标签: mysql optimization indexing


    【解决方案1】:

    我认为这些信息在现有的 MySQL 安装中不可用。

    Percona 为 MySQL 制作工具和补丁来收集索引使用数据。

    见:

    另见:

    您可能还对名为MySQLIndexAnalyzer 的Java 应用感兴趣,它有助于查找冗余 索引。但是这个工具不知道哪些索引是未使用的。

    【讨论】:

    • +1 - 我也推荐 Percona 补丁。我无权访问它们,因此最终记录了每个查询运行,然后针对查询离线运行 EXPLAIN 解析该表并计算 / 使用了 / 哪些索引,然后让我找出哪些 / 被使用t/!
    • @Dave Rix:考虑到这种情况,很好的解决方案。如果您还记录每个查询在日志中出现的次数,您可以将其映射到 EXPLAIN 为每个查询报告的索引,然后推断哪些索引经常使用和不经常使用。已使用但很少使用的索引也可能会被删除。
    • 你是对的 - 尽管有一个名为 mysqlidxchx 的旧工具,但它在库存版本中不可用。在此处查看我帖子的最后两段:mysqlperformanceblog.com/2009/10/16/…
    • @Morgan:感谢您的参考!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-15
    • 1970-01-01
    • 2016-12-23
    • 2013-06-23
    • 2012-01-26
    • 2020-04-11
    • 2016-01-15
    相关资源
    最近更新 更多