2024年9月26日: PostgreSQL 17 发布!
支持的版本:当前 (17) / 16 / 15 / 14 / 13 / 12
开发版本:开发版
不支持的版本:11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3

24.2. 常规重新索引 #

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

已完全清空的 B 树索引页将被回收以供重新使用。但是,仍然存在空间使用效率低下的可能性:如果一个页上的除少数几个索引键之外的所有键都被删除,则该页仍将被分配。因此,在每个范围内大多数(但不是全部)键最终都被删除的使用模式下,空间利用率会很差。对于此类使用模式,建议定期重新索引。

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

此外,对于 B 树索引,新构建的索引访问速度略快于已更新多次的索引,因为在新建索引中,逻辑上相邻的页通常也在物理上相邻。(此考虑因素不适用于非 B 树索引。)定期重新索引以提高访问速度可能是值得的。

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

提交更正

如果您在文档中看到任何不正确的内容,与您对特定功能的体验不符,或者需要进一步澄清,请使用 此表单 报告文档问题。