适用场景
该功能主要针对在线业务的超大表 DDL 操作实现秒级变更。
功能介绍
通过 instant 算法来避免数据拷贝,进而实现大表快速修改列的功能,不拷贝数据,不占用磁盘空间和磁盘 I/O,业务高峰期可以实现秒级变更。
版本限制
MySQL 5.7 内核小版本2.1.3及以上版本支持此功能。
MySQL 8.0 内核小版本3.1.1及以上版本支持此功能。
使用说明
目前 Instant DDL 支持的操作为 ADD COLUMN。
Instant Add Column 操作说明
Instant Add Column 的语法。
Alter Table 新增 algorithm = instant 子句,加列操作可通过如下语句进行:
ALTER TABLE t1 ADD COLUMN c INT, ADD COLUMN d INT DEFAULT 1000, ALGORITHM=INSTANT;
新增参数 innodb_alter_table_default_algorithm,其可以设置为 inplace,instant,默认值为 instant。
加列操作可通过如下语句进行:
ALTER TABLE t1 ADD COLUMN c INT, ADD COLUMN d INT DEFAULT 1000;
Instant Add Column 限制
一条语句中只有加列操作,不支持有其他的操作在同一条语句的情况。
新增列将会放到最后,不支持改变列的顺序。
不支持在行格式为 COMPRESSED 的表上快速加列。
不支持在已经有全文索引的表上快速加列。
不支持在临时表上快速加列。