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” 响应。