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。  |