Online DDL及其操作
传统DDL操作执行期间表无法对外提供读写服务,因此可能导致长时间业务中断。在线DDL支持对正常业务影响较小的情况下进行DDL操作,以减少对业务的影响,提高业务运行的连续性和数据库的可用性。

对业务数据结构的增、删、改操作可能造成实例或业务异常,请谨慎操作。
在线DDL支持通过ONLINE关键字实现在线修改列类型、精度、长度缩减、char类型长度扩长、表级在线移动表空间、在线加非空/检查/主键/唯一约束、在线VACUUM FULL。在线DDL仅在执行前期和后期短暂加排他锁,不会长时间阻塞并发读写业务。请参见ALTER TABLE和VACUUM。
当前支持的Online DDL如表1所示。
分类 | 操作 | 耗时 | 备注 |
|---|---|---|---|
列操作 | 支持以下相关操作:
|
| 修改列类型、精度、长度缩减和CHAR类型长度扩长时,需要结合ONLINE关键字实现。 |
表操作 | 支持以下相关操作:
|
| 表级在线移动表空间时,需要结合ONLINE关键字实现。 |
表空间操作 | 支持以下相关操作:
| 仅修改元数据时,耗时与数据量无关。 | - |
约束操作 | 支持以下相关操作:
|
| 添加非空、检查、唯一、主键约束时,需要结合ONLINE关键字实现。 |
分区操作 | 支持添加分区、删除分区、截断分区、行迁移开关、设置分区索引不可用。 | 仅修改元数据时,耗时与数据量无关。 | - |
回收存储空间 | VACUUM FULL | 需要重整数据,耗时与数据量相关。 | 回收存储空间时,需要结合ONLINE关键字实现。 |
索引操作 | 支持创建索引CONCURRENTLY、重建索引CONCURRENTLY。 | 需要查询数据,耗时与数据量相关。 | 索引相关操作,请参见CREATE INDEX、REINDEX。 |

