MySQL
MySQL
ALTER TABLE orders
ADD INDEX idx_status (status), ALGORITHM=INPLACE, LOCK=NONE;
-- 若存储引擎或操作不支持会直接报错,而不是退化成锁表执行PostgreSQL
PostgreSQL
CREATE INDEX CONCURRENTLY idx_orders_status ON orders (status);
-- 不能在事务块中执行;失败会留下 INVALID 索引,需删除重试
DROP INDEX CONCURRENTLY idx_orders_status;| MySQL | 显式声明 ALGORITHM 与 LOCK 让阻塞级别可控;执行期间关注磁盘与复制延迟 |
|---|---|
| PostgreSQL | CONCURRENTLY 降低锁级别但耗时更长,需要额外扫描与等待 |
| 执行窗口 | 无论哪种方式都应避开高峰并观察负载 |