【发布时间】:2013-12-17 02:00:02
【问题描述】:
我一直认为 B 树索引在每次插入、更新或删除后总是会更新(重新平衡)。但是看起来 Oracle 在删除后没有更新它 (deleted leafs still remain in index tree)。在我们使用 B-tree 索引类型的地方插入和更新行怎么样?每次插入/更新期间是否更新索引?
另一个问题是为什么以及何时索引变得无效,因此需要重建它们?我最关心的是 B-tree 索引,但也很想知道何时必须重建其他类型的索引。
【问题讨论】:
-
从 b-tree 索引中删除不会导致叶块在有足够可用空间时合并在一起,但是当叶块完全为空时,它会返回到“空块”列表以供重复使用。此外,从索引叶块中删除引入的空间可供其他合适的行重用,因此在重建索引之前它不是死空间。