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

云数据库 MySQL 版

复制全文
下载 pdf
功能
在线扩展 varchar 字段长度
复制全文
下载 pdf
在线扩展 varchar 字段长度
本文介绍云数据库 MySQL 版提供的在线修改扩展 varchar 字段长度特性。​
支持版本​
  • MySQL 5.7 版本,内核小版本为 MySQL 5.7.44_20250815 及以上。​
  • MySQL 8.0 版本,内核小版本为 MySQL 8.0.32_20250815 及以上。​
  • MySQL 8.4 版本,内核小版本为 MySQL 8.4.7_20260415 及以上。​
背景信息​
原生 MySQL 在扩展 varchar 字段的时候,如果长度超过了 256 字节,则不允许使用 inplace 算法,只允许使用 copy 算法,并且在整个 copy 阶段用户无法修改旧表,所有的写请求都会被阻塞,只允许读请求。​
云数据库 MySQL 版支持在线跨 256 字节扩展 varchar 字段,在执行 DDL 的时候不阻塞写操作;同时,从小于等于 127 字节扩展到 256 字节及以上时,能够秒级扩展,可以不修改 data 数据,只修改元数据。​
特性说明​
将扩展 varchar 字段功能从 copy 算法改造成 inplace 算法,实现了 Online DDL 的功能。在 DDL 的过程中,您可以对旧表继续执行写操作,后续写操作通过 row log 回放到新表中。​
同时,利用 varchar 字段的特点,实现了从小于等于 127 字节扩展到 256 字节及以上时的秒级扩展,可以不修改 data 数据。​
使用说明​
参数说明​
新增了一个参数来管理在线扩展 varchar 字段功能。​
​
参数名​
说明​
生效范围​
取值范围​
默认值​
loose_extend_varchar_enhance​
是否开启扩展 varchar 增强功能。​
GLOBAL/SESSION​
ON/OFF​
OFF​
​
当打开参数后,扩展的分类如下所示:​
​
varchar 类型字段长度​
是否支持在线扩展​
是否支持只修改元数据​
256 字节以内长度的扩展​
支持​
支持​
从 0~127 字节扩展至 256 字节及以上长度​
支持​
支持​
从 128~255 字节扩展至 256 字节及以上长度​
支持​
不支持​
256 字节以上长度的扩展​
支持​
支持​
​
使用示例​
设置 loose_extend_varchar_enhance 参数的值为 ON 后,即可开启在线扩展 varchar 字段功能,之后就可以使用该功能。更多关于修改参数的详细信息,请参见修改参数。​
  • 256 字节以内长度的扩展​
  • ​
    create table t(c1 varchar(100))charset ascii;​
    Query OK, 0 rows affected (0.017 sec)​
    ​
    alter table t modify column c1 varchar(170),algorithm=inplace,LOCK=NONE;​
    Query OK, 0 rows affected (0.007 sec)​
    Records: 0 Duplicates: 0 Warnings: 0​
    ​
  • 从 0~127 字节扩展至 256 字节及以上长度​
  • ​
    create table t(c1 varchar(100))charset ascii;​
    Query OK, 0 rows affected (0.011 sec)​
    ​
    alter table t modify column c1 varchar(300),algorithm=inplace,LOCK=NONE;​
    Query OK, 0 rows affected (0.006 sec)​
    Records: 0 Duplicates: 0 Warnings: 0​
    ​
  • 从 128~255 字节扩展至 256 字节及以上长度​
  • ​
    create table t(c1 varchar(170))charset ascii;​
    Query OK, 0 rows affected (0.013 sec)​
    ​
    alter table t modify column c1 varchar(300),algorithm=inplace,LOCK=NONE;​
    Query OK, 0 rows affected (0.020 sec)​
    Records: 0 Duplicates: 0 Warnings: 0​
    ​
  • 256 字节以上长度的扩展​
  • ​
    create table t(c1 varchar(300))charset ascii;​
    Query OK, 0 rows affected (0.012 sec)​
    ​
    alter table t modify column c1 varchar(400),algorithm=inplace,LOCK=NONE;​
    Query OK, 0 rows affected (0.005 sec)​
    Records: 0 Duplicates: 0 Warnings: 0​
    ​
​
最近更新时间:2026.05.28 11:52:21
这个页面对您有帮助吗?
有用
有用
无用
无用