线上服务宕机,码农试用期被毕业,原因竟是给MySQL加个字段( 二 )

性能依次是,Instant > Inplace > Copy 。
LOCK可以指定执行过程中,是否加锁,可选项有:

  • NONE
  • 不加锁,允许DML操作 。
  • SHARED
  • 加读锁,允许读操作,禁止DML操作 。
  • DEFAULT
  • 默认锁模式,在满足DDL操作前提下,默认锁模式会允许尽可能多的读操作和DML操作 。
  • EXCLUSIVE
  • 加写锁,禁止读操作和DML操作 。
Online DDL并不是支持所有DDL操作,看一下到底支持哪些操作?
操作
Instant
Inplace
Rebuilds Table
允许并发DML
仅修改元数据
添加列
Yes
Yes
No
Yes
No
删除列
No
Yes
Yes
Yes
No
重命名列
No
Yes
No
Yes
Yes
更改列顺序
No
Yes
Yes
Yes
No
设置列默认值
Yes
Yes
No
Yes
Yes
更改列数据类型
No
No
Yes
No
No
设置VARCHAR列大小
No
Yes
No
Yes
Yes
删除列默认值
Yes
Yes
No
Yes
Yes
更改自动增量值
No
Yes
No
Yes
No
设置列为null
No
Yes
Yes
Yes
No
设置列not null
No
Yes
Yes
【线上服务宕机,码农试用期被毕业,原因竟是给MySQL加个字段】Yes
No
像最常见的添加列就可以使用Instant,而像删除列、重命名列、更改列数据类型就只能使用Inplace了 。




推荐阅读