暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

秒级加字段

芬芳 2023-08-18
237

使用传统方法执行加列操作时,需要重建整个表数据,会占用大量的系统资源。PolarDB MySQL版支持秒级加字段(Instant add column)功能,在加列操作时只需变更表定义信息,无需修改已有数据,帮助您快速完成对任意大小表的加列操作。

使用方法

参数设置
针对PolarDB MySQL版5.7版本的集群,您需要开启loose_innodb_support_instant_add_column参数来使用秒级加字段功能。
image.png
语句

  • 指定ALGORITHM=INSTANT以强制使用秒级加字段功能,语句示例如下:
ALTER TABLE test.t ADD COLUMN test_column int, ALGORITHM=INSTANT;

使用上述语句时,若返回ERROR 0A000: ALGORITHM=INSTANT is not supported for this operation. Try ALGORITHM=COPY/INPLACE. 的错误,表示当前加列操作不能以Instant算法执行,建议您查看loose_innodb_support_instant_add_column参数是否已开启,并仔细核对使用限制。

  • 不指定ALGORITHM或指定ALGORITHM=DEFAULT,PolarDB会自行选择执行速度最快的算法来执行加列操作,语句示例如下:
ALTER TABLE test.t ADD COLUMN test_column int, ALGORITHM=DEFAULT;
ALTER TABLE test.t ADD COLUMN test_column int;

PolarDB算法选择的优先级为INSTANT > INPLACE > COPY。

  • 查看通过Instant算法增加的列信息
    对于PolarDB MySQL版5.7版本,INFORMATION_SCHEMA数据库中新增了INNODB_SYS_INSTANT_COLUMNS表。该表记录了使用Instant算法增加的列信息,例如列名、列序号和默认值(二进制方式存储)等。您可通过如下语句查看该表详情来确认新增的列信息。
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_INSTANT_COLUMNS;

对目标表使用了Instant算法增加列后,如果执行了需要重建表的DDL操作(如DROP COLUMN),系统将会删除INNODB_SYS_INSTANT_COLUMNS表中目标表的相关列信息。

对于PolarDB MySQL版8.0版本,您可通过如下语句查看表的列信息,若查询结果中has_default列为1,则说明该列是通过Instant算法增加的。

SELECT * FROM INFORMATION_SCHEMA.INNODB_COLUMNS WHERE TABLE_ID = (SELECT TABLE_ID FROM INFORMATION_SCHEMA.INNODB_TABLES WHERE NAME = "test/t1");
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论