OceanBase V4 中,以下哪条语句可以正确使用并行 DML 功能?(单选)

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;

解析

  1. A 错误:INSERT ... VALUES 单行插入不支持并行 DML,PDML 只支持INSERT ... SELECT批量写入场景。
  2. B 错误:只写PARALLEL(2),只会让查询部分并行,写入仍然串行;缺少ENABLE_PARALLEL_DML不会开启并行 DML 写入。
  3. C 错误:只写ENABLE_PARALLEL_DML,默认没有并行度。只有目标表预先建表时指定了表级并行度才生效;本题是通用单选题默认场景,必须同时指定PARALLEL(n)。
  4. D 正确:并行 DML 标准写法,同时包含PARALLEL(并行度) + ENABLE_PARALLEL_DML,并且是INSERT ... SELECT语法,满足 OceanBase V4 PDML 条件OceanBase。

官方说明:一般场景下,ENABLE_PARALLEL_DML和PARALLELhint 必须配合使用,才能真正开启并行 DML(查询 + 写入都并行)OceanBase。