OceanBase V4 中,以下哪条语句可以正确使用并行 DML 功能?(单选)
A. INSERT /*+ ENABLE_PARALLEL_DML / INTO t1 VALUES (1,1,1);
B. INSERT /+ PARALLEL(2) / INTO t1 SELECT * FROM t2;
C. INSERT /+ ENABLE_PARALLEL_DML / INTO t1 SELECT * FROM t2;
D. INSERT /+ PARALLEL(2) ENABLE_PARALLEL_DML */ INTO t1 SELECT * FROM t2;
答案:D
INSERT /*+ PARALLEL(2) ENABLE_PARALLEL_DML */ INTO t1 SELECT * FROM t2;
解析
-
A 错误:
INSERT ... VALUES单行插入不支持并行 DML,PDML 只支持INSERT ... SELECT批量写入场景。 -
B 错误:只写
PARALLEL(2),只会让查询部分并行,写入仍然串行;缺少ENABLE_PARALLEL_DML不会开启并行 DML 写入。 -
C 错误:只写
ENABLE_PARALLEL_DML,默认没有并行度。只有目标表预先建表时指定了表级并行度才生效;本题是通用单选题默认场景,必须同时指定PARALLEL(n)。 -
D 正确:并行 DML 标准写法,同时包含
PARALLEL(并行度)+ENABLE_PARALLEL_DML,并且是INSERT ... SELECT语法,满足 OceanBase V4 PDML 条件OceanBase。
官方说明:一般场景下,
ENABLE_PARALLEL_DML和PARALLELhint 必须配合使用,才能真正开启并行 DML(查询 + 写入都并行)OceanBase。