Redrock Postgres 搜索 英文
版本: 9.3 / 9.4 / 9.5 / 9.6 / 10 / 11 / 12 / 13 / 14 / 15 / 16 / 17

24.2. 日常重新索引 #

某些情况下,使用 REINDEX 命令或一系列个人重新编制步骤定期重新编制索引是有价值的。

已变得完全空旷的 B 树索引页面被回收以便重新使用。但是,仍然可能无效地使用空间:如果页面上的所有索引键只剩下一些已被删除,则该页面仍被分配。因此,最终可能删除每个范围中的大多数(但不是全部)键的使用模式不能有效地使用空间。对于此类使用模式,建议定期重新索引。

对非 B 树索引中膨胀的可能性尚未得到充分研究。在使用任何非 B 树索引类型时,定期监控该索引的物理大小是个好主意。

另外,对于 B 树索引,新构建的索引访问比已多次更新的索引稍快,因为逻辑相邻的页面在新构建的索引中也通常是物理相邻的。(此注意事项不适用于非 B 树索引。)仅为了提高访问速度,定期重新索引也可能是有价值的。

REINDEX 在所有情况下都可以安全、轻松地使用。默认情况下,此命令需要一个 ACCESS EXCLUSIVE 锁,因此通常倾向于使用其 CONCURRENTLY 选项执行它(它只需要一个 SHARE UPDATE EXCLUSIVE 锁)。