copy | inplace | pt-osc | gh-ost | instant | |
---|---|---|---|---|---|
数据读取 | 允许 | 允许 | 允许 | 允许 | 允许 |
数据写入 | 不允许 | 允许 | 允许 | 允许 | 允许 |
MDL | 需要 | 需要 | 需要 | 需要 | 需要 |
执行时间 | 非常长 | 长 | 长 | 长 | 短 |
同步延迟 | 非常大 | 大 | 小 | 小 | 小 |
MySQL 8.0.12 中,如下 Alter 操作已经默认使用了 instant 算法:
- 添加列
- 不支持删除普通列
- 添加或者删除一个虚拟列
- 添加或者删除一个列的默认值
- 修改 ENUM 或者 SET 列的定义
- 变更索引的类型(B 树,哈希)
- 使用 alter 语法重命名表
alter table user add column test varchar(128),algorithm=copy;
alter table user drop column test,algorithm=copy;
alter table user add column test varchar(128),algorithm=inplace;
alter table user drop column test,algorithm=inplace;
alter table user add column test varchar(128),algorithm=instant;