Aurora MySQL 5.7 大表执行 DROP COLUMN 操作是否会锁表?
Aurora MySQL 2.04.9版本DROP COLUMN操作锁表问题解答
核心结论
你描述的场景下执行DROP COLUMN操作不会触发全表长锁,不会阻塞正常的业务读写,和原生MySQL 5.7的表现一致。
详细说明
- 你使用的5.7.mysql_aurora.2.04.9属于Aurora MySQL 2.x系列,完全兼容MySQL 5.7的在线DDL特性,没有修改删列这类常规DDL的锁策略
- 待删除列无索引、不属于任何键的前提下,
DROP COLUMN属于支持ALGORITHM=INPLACE、LOCK=NONE的在线DDL操作范畴,仅在操作开始和结束的极短时间内加元数据锁,不会持有长锁阻塞业务
操作建议
- 执行操作时建议显式指定锁和算法参数,避免自动降级触发锁表,参考命令如下:
ALTER TABLE 你的表名 DROP COLUMN 待删除列名, ALGORITHM=INPLACE, LOCK=NONE;
如果当前场景不支持你指定的参数,命令会直接报错而非静默降级,不会产生误锁表的风险
- 大表执行该操作依然会消耗一定的IO、CPU资源,同时会生成额外的日志占用存储,建议在业务低峰期执行,提前确认实例资源和存储余量充足
内容的提问来源于stack exchange,提问作者Andrew McFaul
相关产品推荐
相关产品推荐

