有奖捉虫:办公协同&微信生态&物联网文档专题 HOT

适用场景

该功能主要针对在线业务的超大表 DDL 操作实现秒级变更。

功能介绍

通过 instant 算法来避免数据拷贝,进而实现大表快速修改列的功能,不拷贝数据,不占用磁盘空间和磁盘 I/O,业务高峰期可以实现秒级变更。

版本限制

MySQL 5.7 内核小版本2.1.3及以上版本支持此功能。
MySQL 8.0 内核小版本3.1.1及以上版本支持此功能。

使用说明

目前 Instant DDL 支持的操作为 ADD COLUMN。

Instant Add Column 操作说明

MySQL 8.0 内核小版本3.1.1至3.1.10操作说明
MySQL 8.0 内核小版本3.1.12及以上操作说明
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 的表上快速加列。
不支持在已经有全文索引的表上快速加列。
不支持在临时表上快速加列。