安全写法
安全写法
-- 加列:8.0.12+ 支持 INSTANT
ALTER TABLE appdb.orders ADD COLUMN memo VARCHAR(200), ALGORITHM=INSTANT;
-- 加索引:要求不锁表
ALTER TABLE appdb.orders ADD INDEX idx_status (status), ALGORITHM=INPLACE, LOCK=NONE;
-- 先探测(dry run 思路)
ALTER TABLE appdb.orders ADD COLUMN c1 INT, ALGORITHM=INPLACE, LOCK=NONE; -- 失败了换方案| INSTANT | 秒级完成(元数据操作) |
|---|---|
| INPLACE | 在线重建,允许并发 DML |
| LOCK=NONE | 声明式要求,不满足则直接失败而非硬锁 |
ALTER 最后阶段仍需短暂 MDL 排他:低峰执行 + 确认无长事务。