基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
加列并建立索引复合 DDL 会降级为 Offline DDL 阻塞 DML
更新时间:2026-08-25 02:41
总结说明
在 OceanBase 4.2.x 版本中,执行复合 DDL 操作(例如同时执行 ADD COLUMN 和 ADD INDEX)时,虽然单独的加列操作和单独的加索引操作各自支持 Online DDL,但混合不同类型的操作会被降级为 Offline DDL。
Offline DDL 采用“重建表”的方式执行,在操作期间会锁定表并阻塞 DML 语句,可能导致应用 SQL 执行超时。
详细说明
问题现象
执行如下 DDL 语句期间,DML 语句会被阻塞。
ALTER TABLE t_1
ADD COLUMN api_key VARCHAR(150) DEFAULT NULL COMMENT 'xxxxx',
ADD INDEX idx_api_key (api_key);
ADD COLUMN(列操作)与 ADD INDEX(索引操作)属于混合了不同类型的复合 DDL 操作。在 4.2.x 版本中,此类复合 DDL 会被降级为 Offline DDL 执行。
判断方法
复合 DDL 操作较难直接判断其是否为 Offline DDL。当前可行的判断方法是:
- 在实际环境中执行 DDL 操作。
- 操作完成后,再次查看表的
table_id。 - 如果
table_id发生了变化,则说明该 DDL 是以 Offline 方式执行的。
后续优化
内核侧计划引入 EXPLAIN DDL 语法。该语法将由内核直接返回 DDL 操作是 Online 还是 Offline 模式,无需用户在测试表上手动验证。
适用版本
OceanBase 数据库 4.x 版本。