索引合并,索引重建,索引更新

时间:2018-08-14 12:31:34

标签: sql database oracle

什么是索引重建,索引合并和索引更新的理想时间?我的意思是在什么情况下我们应该执行哪种操作。

2 个答案:

答案 0 :(得分:2)

这取决于。我有一个很大的决策树,大约有550 LOC,可以在重建和合并(另外是“缩小空间”)之间做出选择,或者什么都不做。

通常,重建需要大量空间和时间,因此请尽量避免这样做。

所以在执行操作之前,我先检查

  • 自上次检查以来,表的内容是否已至少更改了一点 (更多50个新块,实际分区变化2%)
  • 如果索引块均已满(即最后10%的块仅填充50%的其余95%)
  • 索引块占多少百分比
  • 该分区的数据是否完整

然后我做

  • 当索引块占满80%或更少时重建。
  • 缩小空间(介于80%和95%之间且数据为最终数据时)
  • 如果最后10%的区块的填充情况差10%,则剩下的

答案 1 :(得分:2)

  • 索引更新:您可以在alter table语句中指定它, DDL操作完成后,索引会自动更新, 这是对表进行分区以获取更多信息,请检查oracle docs.
  • 如果您指的是索引更新统计信息:这取决于有多少数据 在桌子上添加或更改,如果桌子被打了很多 您必须考虑每周或更短时间收集统计信息,如果 查询的查询计划正在更改,并且变慢了 上次统计时可以在user_tables中检查last_analyzed 已更新。
  • 重建索引:重新组织索引(降低高水位线 (用于块空间)和可用的已分配空间或更改索引 讲师。请注意,它将在重建时锁定表(除非 它是在线的),但是合并不会锁定表,也 重建需要空间。发生大量dml时考虑进行重建 (尤其是删除和更新),您可以从 相对于整体空间更高时,高水位标记。
  • 如前所述,
  • 索引合并不会锁定表并合并 索引块的内容(如果可能)以释放块以供重用。