【问题标题】:Find out usage statistics of MySQL indices?找出 MySQL 索引的使用统计信息?
【发布时间】:2012-12-18 02:30:54
【问题描述】:

是否可以查明 MySQL 表的索引被使用的频率?

我有几个表索引,我想知道是否有 MySQL 未使用的索引。

【问题讨论】:

    标签: mysql indexing statistics usage-statistics


    【解决方案1】:

    注意:此答案自 5.5.3 起不再有效!

    https://stackoverflow.com/a/43205887/1251127

    原始答案如下。

    目前,MySQL 不提供关于索引使用情况的统计信息。

    您自己生成这些统计信息的一种方法是记录所有查询(请注意此处的额外 i/o)并将其解析出来。 Percona 有一个很好的工具,pt-index-usage

    【讨论】:

    • 太糟糕了,我也有同样的需求。
    【解决方案2】:

    是的,是的。你应该查询Performance Schema

    select * from performance_schema.table_io_waits_summary_by_index_usage
    where object_schema = 'your_schema'
    

    count_star 列显示自 MySQL 启动以来每个索引使用了多少次。如果您添加以下内容,您将获得从未使用过的索引:

    and count_star = 0
    

    【讨论】:

    • 对 mySQL 5.5.3 或更高版本有效,并且仅在 my.cnf 中启用时有效,请参阅dev.mysql.com/doc/refman/5.5/en/performance-schema.html
    • 你让我很开心。我正在学习 MongoDB,看到他们有这个功能,我不得不检查 MySQL 是否也有。可以说我有一些清理工作要做。
    【解决方案3】:

    除了@user1970667 的回答,您还可以使用:

    select * from sys.schema_unused_indexes;
    

    获取未使用索引的列表。

    【讨论】:

    • 注意:我猜它很明显但是 - This view is most useful when the server has been up and processing long enough that its workload is representative.。我想查询performance_schema 时也是如此
    猜你喜欢
    • 2014-02-26
    • 1970-01-01
    • 2018-11-14
    • 1970-01-01
    • 1970-01-01
    • 2015-07-15
    • 1970-01-01
    • 2011-04-06
    • 2012-05-26
    相关资源
    最近更新 更多