基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
并行 DDL
更新时间:2026-08-26 14:06:34
并行 DDL 是并行执行在 DDL 场景下的具体应用。OceanBase 数据库支持并行 DDL 操作,以提升数据库在执行 DDL 时的执行效率。关于并行执行与分布式执行、并行查询的概念关系,请参见分布式执行与并行执行概述。
配置并行 DDL
在 OceanBase 数据库中,可以通过配置配置项灵活控制并行 DDL 功能:
_enable_parallel_table_creation:用于控制并行CREATE TABLE操作。_parallel_ddl_control:用于控制以下并行操作:TRUNCATE TABLEDROP TABLECREATE INDEXCREATE VIEWCOMMENTADD_COLUMNDROP_COLUMNADD_PARTITIONADD_SUB_PARTITIONDROP_PARTITIONDROP_SUB_PARTITIONTRUNCATE_PARTITIONTRUNCATE_SUB_PARTITION
_enable_parallel_table_creation
_enable_parallel_table_creation 用于控制是否在租户级别开启并发创建表(CREATE TABLE)的功能。
| 属性 | 描述 |
|---|---|
| 参数类型 | 布尔类型 |
| 默认值 | True,表示开启并发创建表的功能。 |
| 取值范围 |
|
| 生效模式 | 立即生效 |
示例
在
sys租户中执行下面语句,设置用户租户mysql001关闭并发创建表的功能。ALTER SYSTEM SET _enable_parallel_table_creation = false tenant=mysql001;在用户租户中执行下面语句,设置关闭并发创建表的功能。
MySQL 模式:
ALTER SYSTEM SET _enable_parallel_table_creation = false;Oracle 模式:
说明
Oracle 模式下,在语法上隐藏配置项需加双引号。
ALTER SYSTEM SET "_enable_parallel_table_creation" = false;
_parallel_ddl_control
_parallel_ddl_control 用于控制是否在租户级别开启各类并行 DDL 的功能。
| 属性 | 描述 |
|---|---|
| 参数类型 | STRING |
| 默认值 | 空字符串,语义如下:
说明若对个别并行 DDL 进行操作,则没有涉及的 DDL 类型除 |
| 取值范围 | 空串,或 DDL:{ON | OFF} [, DDL:{ON | OFF}] [, ...]。 DDL 类型信息详见下表。 |
| 生效模式 | 立即生效 |
DDL 类型信息:
| DDL类型 | 取值 |
|---|---|
| TRUNCATE_TABLE | TRUNCATE_TABLE:{ON | OFF} |
| SET_COMMENT | SET_COMMENT:{ON | OFF} |
| CREATE_INDEX | CREATE_INDEX:{ON | OFF} |
| CREATE_VIEW | CREATE_VIEW:{ON | OFF} |
| DROP_TABLE | DROP_TABLE:{ON | OFF} |
| ADD_COLUMN | ADD_COLUMN:{ON | OFF} |
| DROP_COLUMN | DROP_COLUMN:{ON | OFF} |
| ADD_PARTITION | ADD_PARTITION:{ON | OFF} |
| ADD_SUB_PARTITION | ADD_SUB_PARTITION:{ON | OFF} |
| DROP_PARTITION | DROP_PARTITION:{ON | OFF} |
| DROP_SUB_PARTITION | DROP_SUB_PARTITION:{ON | OFF} |
| TRUNCATE_PARTITION | TRUNCATE_PARTITION:{ON | OFF} |
| TRUNCATE_SUB_PARTITION | TRUNCATE_SUB_PARTITION:{ON | OFF} |
注意
- OceanBase 数据库当前版本暂不支持全文索引、多值索引和向量索引并发执行。
- 对于 V5.x 版本,
_parallel_ddl_control从 V5.0.1 版本开始引入参数ADD_COLUMN、DROP_COLUMN、ADD_PARTITION、ADD_SUB_PARTITION、DROP_PARTITION、DROP_SUB_PARTITION、TRUNCATE_PARTITION和TRUNCATE_SUB_PARTITION。
示例
在
sys租户中执行下面语句,设置用户租户mysql001关闭并行TRUNCATE TABLE和开启并行CREATE INDEX的功能。ALTER SYSTEM SET _parallel_ddl_control = 'CREATE_INDEX:ON, TRUNCATE_TABLE:OFF' tenant = 'mysql001';在用户租户中执行下面语句,设置关闭并行
TRUNCATE TABLE和开启并行CREATE INDEX的功能。MySQL 模式:
ALTER SYSTEM SET _parallel_ddl_control = 'CREATE_INDEX:ON, TRUNCATE_TABLE:OFF';Oracle 模式:
说明
Oracle 模式下,在语法上隐藏配置项需加双引号。
ALTER SYSTEM SET "_parallel_ddl_control" = 'CREATE_INDEX:ON, TRUNCATE_TABLE:OFF';
DDL 默认并行度
在 OceanBase 数据库中可以使用会话(Session)级参数 _force_parallel_ddl_dop 指定 DDL 操作并行执行的默认并行度。
说明
若未使用 PARALLEL Hint 显式指定并行度,则 DDL 将使用 _force_parallel_ddl_dop 设置的值作为并行度。
在使用并行 DDL 功能时,可以预先通过 _force_parallel_ddl_dop 设置 DDL 并行执行的并行度。
示例
在用户租户中执行下面语句,设置 Session 级 DDL 操作并行执行的默认并行度为 16。
MySQL 模式:
SET _FORCE_PARALLEL_DDL_DOP = 16;
Oracle 模式:
SET "_FORCE_PARALLEL_DDL_DOP" = 16;