← 中文资源

简体中文版本

数据库重建索引维护工作流

评估索引膨胀、并发构建替代索引、以最小锁切换或删除旧索引,并监控对查询延迟的影响。

阅读英文原文

概述

重建膨胀索引若采用带锁方式,会阻塞写入甚至长时间占用表。先依据统计定位真正膨胀的索引,用并发方式构建替代,再受控切换并监控读写延迟,可在不中断服务的前提下改善体积与性能。

关键步骤

  1. 用统计度量索引膨胀并确定候选。
  2. 并发构建替代索引。
  3. 以受控步骤切换或删除旧索引。
  4. 监控变更后的查询延迟与写入成本。

验证

  • 新索引体积更小。
  • 查询计划使用新索引。
  • 变更期间未阻塞写入。
  • 读写延迟保持正常。

决策点

应并发构建新索引后切换,而非原地重建;大表宜在非高峰执行,因并发构建仍消耗 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;