
在 MySQL 8.0 及以上版本的 InnoDB 中,并非所有 DDL 都会触发表级锁或长时间阻塞业务写入。下面这道题考察的正是 InnoDB 8.0+ 的在线 DDL 行为:
- A、删除数据表字段
- B、添加带默认值、允许 NULL 的普通字段
- C、添加不可为空字段
- D、修改字段数据长度
答案是 B。
为什么会选 B?因为 InnoDB 8.0 支持 INSTANT 算法,只要是在表末尾添加允许 NULL 或带默认值的普通字段,就能够瞬间完成,不会重建表,也不会加锁。而删除字段、添加不可为空字段、修改字段数据长度等操作,通常需要重建表或回填数据,可能对并发 DML 造成影响。
|