支持的版本:当前 (17) / 16 / 15 / 14 / 13
开发版本:devel
不支持的版本: 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 锁。

提交更正

如果您发现文档中有任何不正确、与您使用特定功能的体验不符或需要进一步澄清的地方,请使用此表单报告文档问题。