在长期的极高频并发写入、更新与删除场景下,B 树索引内部的物理索引页可能会逐渐变得稀疏碎裂,产生所谓的索引膨胀(Index Bloat),使索引占用的物理磁盘体积远超其实际需要,拖慢仅索引扫描效率。此外,在遭遇突发断电等底层硬件异常时,索引树结构可能遭受破坏。
执行 REINDEX 命令可以销毁并就地全新重建索引:
REINDEX INDEX my_index; REINDEX TABLE my_table;
在生产业务不间断运行的环境下,标准的 REINDEX 会在目标表上获取排他锁阻断写操作。强烈推荐使用并发重建语法:
REINDEX TABLE CONCURRENTLY my_table;
该命令在后台通过先构建全新影子索引、待追齐最新增量变更后在元数据级别原子切换的方式工作,全程完全不阻塞任何业务的常规并发读写操作。