概述
重建膨胀索引若采用带锁方式,会阻塞写入甚至长时间占用表。先依据统计定位真正膨胀的索引,用并发方式构建替代,再受控切换并监控读写延迟,可在不中断服务的前提下改善体积与性能。
关键步骤
- 用统计度量索引膨胀并确定候选。
- 并发构建替代索引。
- 以受控步骤切换或删除旧索引。
- 监控变更后的查询延迟与写入成本。
验证
- 新索引体积更小。
- 查询计划使用新索引。
- 变更期间未阻塞写入。
- 读写延迟保持正常。
决策点
应并发构建新索引后切换,而非原地重建;大表宜在非高峰执行,因并发构建仍消耗 IO。
适用范围
本条目围绕「数据库重建索引维护工作流」给出可复制的步骤、验证方式与常见问题,适合需要按此流程落地的工程团队。执行时请结合自身上下文调整命令与阈值,并在变更前后留存证据,便于后续复核与回滚。
建议在正式环境落地前先在预发或隔离环境演练一遍,把关键观测指标与负责人一并记录,确保出现异常时能快速定位并恢复。
CREATE INDEX CONCURRENTLY orders_created_idx_new ON orders (created_at);
-- then swap
DROP INDEX CONCURRENTLY orders_created_idx;
ALTER INDEX orders_created_idx_new RENAME TO orders_created_idx;