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

25.2. 常规重新索引 #

在某些情况下,使用 REINDEX 命令或一系列单独的重建步骤定期重建索引是值得的。

已变得完全空闲的 B 树索引页将被回收以供重新使用。但是,仍然有可能低效地使用空间:如果页面上的所有索引键除了少数几个已被删除,则该页面仍将被分配。因此,最终将删除每个范围中的大多数(但不是全部)键的使用模式将导致空间利用率低下。对于此类使用模式,建议定期重新索引。

尚未很好地研究非 B 树索引中膨胀的可能性。在使用任何非 B 树索引类型时,定期监视索引的物理大小是一个好主意。

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

REINDEX 在所有情况下都可以安全且轻松地使用。此命令默认情况下需要 ACCESS EXCLUSIVE 锁,因此通常最好使用其 CONCURRENTLY 选项执行它,该选项仅需要 SHARE UPDATE EXCLUSIVE 锁。