更新时间:2026-07-28 GMT+08:00
DDL
简介
数据库的 DDL 功能用于数据库对象的变更。GaussDB支持如下DDL功能:
- 索引操作
- 主键操作
- 列操作
- 生成列操作
- 外键操作
- 表操作
- 分区操作
- 模式操作
- 数据库实例操作
- 表空间操作
按照是否涉及 DDL 目标对象数据的处理,DDL 语句可以划分为两种类型:
- 逻辑 DDL 语句:仅修改数据库对象的元数据,不处理对象存储的数据,例如变更表名或变更列名。
- 物理 DDL 语句:同时修改变更对象的元数据和对象所存储的用户数据。例如,为表创建索引,需要修改表定义并进行全表扫描以构建新索引。
原理
- 逻辑DDL语句:因仅需要修改数据库对象的元数据,因此执行时间通常较短,只需要几十毫秒或者几秒。执行这类 DDL 语句几乎不消耗系统资源,因此不会影响业务负载。
- 物理DDL语句:执行时间较长,且执行时间与表的数据量、机器配置以及业务负载有关。离线DDL执行期间加排他锁,数据重组与元数据修改完后提交后释放锁,因此执行期间会阻塞业务执行。物理DDL会长时间阻塞业务,因此GaussDB提供在线DDL在对业务影响较小的情况下进行DDL,减少对业务的影响,提高业务运行的连续性和数据库的可用性。在线DDL不会长时间加排他锁,执行中允许对该表的并发读写操作,减少对用户业务运行影响。
示例
本小节介绍GaussDBDDL基本功能,因DDL功能比较多,仅介绍部分常用操作,如列操作和表操作等。
- 创建表。
gaussdb=# CREATE TABLE t1(c1 INT,c2 INT); CREATE TABLE gaussdb=# INSERT INTO t1 VALUES(generate_series(1,10), generate_series(1,10)); INSERT 0 10
- 增加列。
gaussdb=# ALTER TABLE t1 ADD COLUMN c3 INTEGER; ALTER TABLE - 删除列。
gaussdb=# ALTER TABLE t1 DROP COLUMN c3; ALTER TABLE - 重命名表。
gaussdb=# ALTER TABLE t1 RENAME TO t2; ALTER TABLE gaussdb=# ALTER TABLE t2 RENAME TO t1; ALTER TABLE
- 修改列类型。
- 在线修改列类型。
gaussdb=# ALTER TABLE ONLINE t1 ALTER c2 TYPE BIGINT; ALTER TABLE - 离线修改列类型。
gaussdb=# ALTER TABLE t1 ALTER c2 TYPE INT; ALTER TABLE
- 在线修改列类型。
另请阅读
- 离线DDL另请阅读《参考》中“SQL参考 > SQL语法 > DDL语法一览表”章节。
- 在线DDL另请阅读在线DDL、《参考》中“SQL参考 > SQL语法 > Online DDL及其操作”章节。
父主题: 基础概念