Skip to main content

SET BACKGROUND_DDL

测试版功能

SET BACKGROUND_DDL 命令目前处于测试阶段。如果您遇到任何问题或有任何反馈,请联系我们。

使用 SET BACKGROUND_DDL 命令在后台运行数据定义语言(DDL)操作,例如创建物化视图。

句法

SET BACKGROUND_DDL = { true | false };
  • BACKGROUND_DDL 设置为 true 时,后续 DDL 操作都将在后台执行,您可以继续进行其他任务。

  • BACKGROUND_DDL 设置为 false(或根本未设置)时,DDL 操作将在前台执行。

支持的 DDL 操作

持久性

对于在后台创建的物化视图,即使在检查点过程中发生错误,其表定义也会在创建过程中持续存在。这样,物化视图作业就能从故障发生前的位置恢复。只有在取消作业时,其表定义和片段才会被删除。

对于在前台创建的物化视图,如果在检查点过程中发生错误、集群重启或流式作业被取消,其表和片段将被清理。

关键区别在于物化视图的创建阶段。创建物化视图后(即回填完成),前台和后台物化视图在功能上是相同的。

后台管理

监控进度

可使用 SHOW JOBS 命令监控后台 DDL 操作的进度。

取消作业

可使用 CANCEL JOBS 命令取消后台正在运行的作业,命令后面应加上作业 ID。

设置并发作业

可使用 ALTER SYSTEM SET max_concurrent_creating_streaming_jobs 命令调整并发创建流式作业的最大数量。

例如,可以将并发创建流式作业的最大数量设置为 4:

ALTER SYSTEM SET max_concurrent_creating_streaming_jobs TO 4;

示例

CREATE TABLE t (v1 int);

INSERT INTO t SELECT * FROM generate_series(1, 1000000);

SET BACKGROUND_DDL=true;

CREATE MATERIALIZED VIEW m AS SELECT * FROM t;
-- 立即返回 “CREATE_MATERIALIZED_VIEW” 响应。