【问题标题】:Oracle index fragmentationOracle 索引碎片
【发布时间】:2021-07-17 02:13:05
【问题描述】:

我想知道除了“分析索引验证结构”之外是否有其他方法可以找出Oracle数据库中的索引碎片?因为这会导致生产环境中的行锁定。 “在线分析索引验证结构”不会填充 index_stats。 谢谢。

【问题讨论】:

    标签: database oracle oracle19c


    【解决方案1】:

    如果您的优化器统计信息是相对最新的,您可以执行类似的操作

    • 从 USER_INDEXES 获取 LEAF_BLOCKS 的数量
    • 从 USER_INDEXES 获取 NUM_ROWS
    • 从 USER_TABLES 获取索引中每一列的 AVG_COL_LEN

    将列长度加上 6 个字节作为 rowid,乘以行数,得出索引条目的总字节数。

    根据其中的数据以及插入数据的方式,索引通常会占满 65-90%。加入一些块级开销(假设每 8k 块 200 字节),您可以使用它来估计您期望索引具有多少叶块。

    如果这与您拥有的 LEAF_BLOCK 统计数据大致接近,那么您可以假设该索引可能不是“碎片化”的(尽管这是一个可以涵盖很多事物的术语)。

    但除非你有一个性能问题可以当前绑定到这个索引,否则我不会太担心索引碎片。

    【讨论】:

      【解决方案2】:

      行锁是行锁;因此,这不太可能是由于索引碎片(这是另一个主题)。 行锁通常由应用程序取出,属于正常行为。

      【讨论】:

        猜你喜欢
        • 2020-05-17
        • 1970-01-01
        • 1970-01-01
        • 2019-10-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多