You need to enable JavaScript to run this app.
文档中心
云数据库 MySQL 版

云数据库 MySQL 版

复制全文
下载 pdf
功能
秒级加列
复制全文
下载 pdf
秒级加列
本文介绍云数据库 MySQL 版提供的秒级加列功能的相关信息。​
支持版本​
  • MySQL 5.7 版本,且内核小版本为 MySQL 5.7.44_20251015 及以上。​
  • MySQL 8.0 版本,不限内核小版本。​
  • MySQL 8.4 版本,且内核小版本为 MySQL 8.4.7_20260415 及以上。​
背景信息​
数据库中的每一行数据均被持久化存储于磁盘之中。当对表执行 ADD COLUMN 操作时,磁盘中的数据也会相应地被修改,所需时间与对应表的大小成正比。因此,在对大表进行 ADD COLUMN 操作时,所花费的时间可能长达数小时甚至数天,这给用户的业务带来了诸多不便。​
为了优化这个行为,社区版 MySQL 8.0.12 版本引入了 INSTANT (即时)算法,对部分 ADD COLUMN 操作,不再修改用户原有数据,只需对表元信息进行修改,从而大幅缩小大表加列所需的时间,减少对系统的影响。​
为提供更优质的体验,云数据库 MySQL 版将该功能从社区版 MySQL 8.0 移植至 MySQL 5.7 版本。​
特性说明​
云数据库 MySQL 版的秒级加列 (Instant Add Column) 功能通过变更数据字典的元数据来优化 ADD COLUMN 操作,避免了传统 DDL 操作对全量表数据的修改或重建,实现加列操作在秒级内完成,且不受表数据量的影响。​
使用说明​
参数说明​
云数据库 MySQL 版为 MySQL 5.7 提供了可修改参数 loose_innodb_instant_ddl_enabled 对秒级加列(Instant Add Column)功能进行开启或关闭。在 MySQL 8.0 和 MySQL 8.4 中,秒级加列功能默认开启,不支持修改。​
​
参数名称​
类型​
默认值​
是否需要重启以生效​
取值范围​
级别​
参数描述​
loose_innodb_instant_ddl_enabled​
bool​
OFF​
否​
[ON|OFF]​
GLOBAL​
是否开启秒级加列特性。取值:​
  • ON:开启。​
  • OFF:关闭。​
​
使用示例​
说明​
以下内容为在 MySQL 5.7 版本中使用秒级加列功能的方法。MySQL 8.0 和 MySQL 8.4 版本中的秒级加列使用方法与社区版本相同,可参考 MySQL 官方文档。​
  1. 修改参数 loose_innodb_instant_ddl_enabled 为 ON。关于修改实例参数的详细信息,参见修改参数。​
  1. 使用秒级加列。​
  • 指定 ALGORITHM=INSTANT 强制使用秒级加列。​
​
ALTER TABLE <table_name> ADD COLUMN <column_name> <data_type> <constraints>, ALGORITHM = INSTANT;​
​
  • 不指定 ALGORITHM,云数据库 MySQL 版则在运行时根据条件选择最优模式。​
​
ALTER TABLE <table_name> ADD COLUMN <column_name> <data_type> <constraints>;​
​
  1. 查看已执行秒级加列的表。​
MySQL 5.7 版本在 INFORMATION_SCHEMA_INNODB_SYS_TABLES 新增列 INSTANT_COLS,即 INSTANT DDL 执行前,表的原列的个数。​
​
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE INSTANT_COLS > 0;​
​
  1. 查看通过秒级加列添加的列。​
MySQL 5.7 版本在 INFORMATION_SCHEMA 库中新增了 INNODB_SYS_INSTANT_COLUMNS 表,可通过如下 SQL 查看秒级加列功能添加的列信息。​
​
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_INSTANT_COLUMNS WHERE TABLE_ID = ​
(SELECT TABLE_ID FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME = "<database_name>/<table_name>");​
​
注意事项​
说明​
以下内容为在 MySQL 5.7 版本中使用秒级加列功能的注意事项。MySQL 8.0 和 MySQL 8.4 版本中的秒级加列使用方法与社区版本相同,可参考 MySQL 官方文档。​
  • 不支持多操作合并,例如在添加列的同时添加索引。​
  • 仅支持尾部秒级加列,不支持指定 FIRST 或 AFTER 关键字表示定义在某列之前或之后。​
  • 不支持压缩表、带全文索引的表、临时表和分区表。​
  • 所加字段不能为自增列 (auto_increment),不能作为主键,不支持虚拟列。​
  • 执行过秒级加列的表不能执行 flush tables xx for export。​
  • 执行过秒级加列的表不能执行 alter table xx discard tablespace。​
性能数据​
通过对 10GiB 数据量的表进行开启与关闭秒级加列功能的对比测试,开启前后,增加一列的操作时间从 50 秒降至 1 秒以内。​
最近更新时间:2026.08.27 11:24:31
这个页面对您有帮助吗?
有用
有用
无用
无用