PostgreSQL 18 中文参考文档(未翻译部分保留英文)🌐 切换到英文原版 →

24.2. 例行重建索引 #

在长期的极高频并发写入、更新与删除场景下,B 树索引内部的物理索引页可能会逐渐变得稀疏碎裂,产生所谓的索引膨胀(Index Bloat),使索引占用的物理磁盘体积远超其实际需要,拖慢仅索引扫描效率。此外,在遭遇突发断电等底层硬件异常时,索引树结构可能遭受破坏。

执行 REINDEX 命令可以销毁并就地全新重建索引:

REINDEX INDEX my_index;
REINDEX TABLE my_table;

在生产业务不间断运行的环境下,标准的 REINDEX 会在目标表上获取排他锁阻断写操作。强烈推荐使用并发重建语法:

REINDEX TABLE CONCURRENTLY my_table;

该命令在后台通过先构建全新影子索引、待追齐最新增量变更后在元数据级别原子切换的方式工作,全程完全不阻塞任何业务的常规并发读写操作。