tencent cloud

文档反馈

秒级更改列

最后更新时间:2024-06-18 14:37:55

    功能介绍

    秒级更改列操作只会在数据字典表中记录列修改信息,避免了以往更改列操作时必须做的数据拷贝,从而大幅缩短大表更改列所需的时间,减少对应用系统的影响以及资源的消耗。

    支持版本

    内核版本 MySQL 8.0 20230630及以上。

    适用场景

    适用于需要对数据量大的表进行更改列操作的场景。

    测试结果

    表行数
    未使用秒级更改列特性变更时长
    秒级更改列特性变更时长
    100万
    22.9秒
    0.01秒
    1000万
    13分39.72秒
    0.01秒
    1亿
    3小时51分16.40秒
    0.01秒

    使用说明

    秒级更改列语法 ALTER TABLE 新增 algorithm = instant 子句,更改列操作可通过如下语句进行:
    ALTER TABLE modify_tab_col MODIFY COLUMN c1 BIGINT,ALGORITHM=INSTANT;
    新增参数 cdb_instant_modify_column_enabled 用于控制秒级更改列功能,可以设置为 ON/OFF。
    参数名
    状态
    类型
    默认
    参数值范围
    说明
    cdb_instant_modify_column_enabled
    yes
    bool
    OFF
    ON/OFF
    功能开关,是否打开秒级更改列功能。
    说明:
    用户目前无法直接修改以上参数的参数值,如需修改可 提交工单

    秒级更改列限制

    只支持修改列类型,不支持修改字段的 nullable,unsigned/signed,charset,但支持修改 default 属性。
    只支持部分类型的修改,且只能增加长度,目前仅支持以下类型的转换:char 和 varchar 之间,binary 和 varbinary 之间,以及 tinyint/smallint/mediumint/int/bigint 之间的相互转换。
    例如:
    char(10) → char(100)
    char(10) → varchar(100)
    varchar(10) → char(100)
    varchar(10) → varchar(100)
    binary(10) → binary(100)
    binary(10) → varbinary(100)
    varbinary(10) → binary(100)
    varbinary(10) → varbinary(100)
    tinyint/smallint/mediumint/int → bigint
    tinyint/smallint/mediumint → int
    tinyint/smallint → mediumint
    tinyint → smallint
    注意:
    不支持 char/varchar 和 binary/varbinary 和 integer 之间的修改,例如,不支持 char → binary,binary → varchar 等。integer 类型需向更大取值范围更改,例如,不支持 bigint → int,int → smallint 等。
    单个 column 只能 instant modify 一次,可以同时 instant modify 多个 column。
    单个 column 第一次 instant add/modify 后,第二次修改此列只能以非 instant 方式进行。
    instant add columns 和 instant modify columns 的操作需要分开执行,可以先执行 instant add columns,再执行 instant modify columns,或先执行 instant modify columns,再执行 instant add columns。不能 instant modify 之前 instant add 的列。
    不能同时修改列名和列类型,可以先修改列名再修改列类型。
    不支持 import/export。
    不支持加密与压缩。
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持