全部产品
Search
文档中心

云原生数据库 PolarDB:Online Copy DDL

更新时间:Mar 13, 2026

PolarDB MySQL版新增Online Copy DDL功能,有效缓解传统Copy DDL(如MODIFY COLUMN、普通表与分区表互转等)在执行过程中因全程持有MDL锁而导致的业务阻塞问题。

背景信息

在标准Copy DDL执行期间,MySQL会持有MDL-SNW(Shared No Write)锁,导致表上的所有写操作(INSERT/UPDATE/DELETE)被持续阻塞。这可能引发业务连接堆积,严重时甚至造成系统雪崩。Online Copy DDL通过优化数据拷贝阶段的锁机制,在保证数据一致性的前提下,允许并发读写操作,显著提升DDL执行期间的业务可用性。

适用范围

PolarDB MySQL版8.0.2版本且修订版本为8.0.2.2.33.1及以上,可通过查询版本号确认集群版本。

说明

Online Copy DDL功能目前处于灰度发布阶段。如需使用,请前往配额中心,根据配额ID polarm_82_online_copy_ddl找到配额名称,在对应的操作列单击申请来开通该功能。申请时请提供需要开通的集群ID(形如pc-xxx)。

使用限制

支持的操作:

  • 普通表与分区表互相转换。

  • MODIFY COLUMN语句(不支持同时修改列位置)。

不支持的操作或对象:

  • 含有JSON类型列的表。

  • 含有空间索引(SPATIAL INDEX)的表。

  • 含有全局二级索引(GSI)的表。

  • 混合分区(Hybrid Partitioning)表。

  • 多主集群(Limitless)

  • 表上已执行过LOCK TABLES的会话。

  • 显式指定ALGORITHM=COPYLOCK=SHAREDLOCK=EXCLUSIVE的DDL。

说明

您可以在执行DDL操作前使用EXPLAIN DDL功能,直观地判断当前DDL操作是否支持Online Copy DDL。

使用方法

您可以先通过loose_polar_support_online_copy_ddl_algorithm参数开启Online Copy DDL功能。针对MODIFY COLUMN语句,需要额外开启loose_polar_support_online_copy_ddl_algorithm_for_modify参数。具体操作请参见设置集群参数和节点参数。参数说明如下:

参数

级别

说明

loose_polar_support_online_copy_ddl_algorithm

Global

Online Copy DDL主开关。取值范围如下:

  • ON:启用Online Copy DDL。

  • OFF(默认):禁用Online Copy DDL。

loose_polar_support_online_copy_ddl_algorithm_for_modify

Global

专用于MODIFY COLUMN的Online Copy DDL开关。取值范围如下:

  • ON:启用MODIFY COLUMN的Online能力。

  • OFF(默认):禁用。

方式一:显式指定算法(推荐)

通过ALGORITHM=COPY, LOCK=NONE强制使用Online Copy DDL:

CREATE TABLE t(a int);
ALTER TABLE t MODIFY COLUMN a BIGINT DEFAULT NULL, ALGORITHM=COPY, LOCK=NONE;
说明

使用上述语句时,若返回ERROR 1846 (0A000): LOCK=NONE is not supported. Reason: COPY algorithm requires a lock. Try LOCK=SHARED.的错误,表示当前修改字段类型操作无法使用Online Copy DDL算法执行。建议您查看loose_polar_support_online_copy_ddl_algorithm参数是否已开启,并仔细核对使用限制。

方式二:自动选择最优算法(默认行为)

不指定算法或使用DEFAULT,系统将自动选择最合适的执行方式:

-- 方法1:显式DEFAULT
ALTER TABLE t MODIFY COLUMN a BIGINT DEFAULT NULL, ALGORITHM=DEFAULT, LOCK=DEFAULT;

-- 方法2:完全省略(等效)
ALTER TABLE t MODIFY COLUMN a BIGINT DEFAULT NULL;
说明

系统优先尝试Online Copy DDL。若不满足条件,则自动回退到传统Copy DDL(会锁表),确保DDL最终能完成。