---
title: PDML 并行 DML 能力列表清单-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于PDML 并行 DML 能力列表清单相关的常见问题和使用技巧，帮助您快速解决PDML 并行 DML 能力列表清单的难题。
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

划线反馈

# PDML 并行 DML 能力列表清单

更新时间：2026-05-28 02:06

适用版本： V3.1.x、V3.2.x、V4.0.x、V4.1.x、V4.2.x 内容类型：TechNote  

并行 DML（PDML）通过使用并行执行机制来提高对大型数据库的表和索引执行插入、更新、删除等操作，以提高执行效率。OceanBase 数据库支持在 SQL 语句或会话中显式启用并行 DML。不过目前仍存在部分 DML 语法因为批量操作数据时对数据顺序有前后依赖性，所以无法走 PDML 的并发执行。本文主要列出了目前 PDML 的能力清单。

## OceanBase 数据库支持如下 SQL 语句的并行执行能力

- INSERT INTO SELECT
 - UPDATE
 - DELETE

## 如果表上存在下列索引类型，也需要支持并行执行

- 局部索引
 - 单分区全局索引
 - 多分区全局索引
 - 唯一索引

## OceanBase 数据库不支持以下 SQL 语句使用并行 DML

- values 算子目前是无并行度的，所以 `insert/replace into ... values` 语句目前无法支持 PDML，例如。

  ```shell
  insert /*+ parallel(3) enable_parallel_dml */ into t1 VALUES (1,'a'),(2,'b'),(3,'c');

  ```
 - `insert into ... select ... from dual` 不支持并行执行，例如。

  ```shell
  insert /*+ parallel(3) enable_parallel_dml */ into t1 select 1,'a' from dual;

  ```
 - `insert into ... on duplicate key update`，例如。

  ```shell
  explain extended insert /*+ enable_parallel_dml parallel(3) */ into t1 values(1,1),(2,2) on duplicate key update c1=100;

  ```
 - `insert ignore into ...`，例如。

  ```shell
  insert /*+ append enable_parallel_dml parallel(3) */ ignore into t2 select * from t1;

  ```
 - `insert into ... select ...` 语句中为自增列指定了值，并且自增列是主键或者分区键时，不支持 PDML，例如。

  ```shell
  create table t1 (c1 int auto_increment primary key, c2 int, c3 int);

  create table t2 (c1 int, c2 int, c3 int);

  -- 不支持 PDML。
  insert /*+ enable_parallel_dml parallel(3) */ into t1 select * from t2;

  -- 支持 PDML。
  insert /*+ enable_parallel_dml parallel(3) */ into t1(c2, c3) select c2, c3 from t2;

  drop table t1;

  create table t1 (c1 int auto_increment, c2 int, c3 int);

  -- 支持 PDML。
  insert /*+ enable_parallel_dml parallel(3) */ into t1 select * from t2;

  create table t1 (c1 int auto_increment unique key, c2 int, c3 int);

  drop table t2;

  create table t2 (c1 int, c2 int);

  create table t3 (id bigint(10) AUTO_INCREMENT PRIMARY KEY, c1 int);

  -- 不支持 PDML。
  insert /*+enable_parallel_dml parallel(10)*/ into t3 select * from t2;

  ```
 - `merge into ...` 更新主键或唯一键，例如。

  ```shell
  -- col2 为 tbl1 的唯一键。
  explain extended merge /*+ enable_parallel_dml parallel(3) */ into tbl1 using tbl2 on (tbl1.col1 = tbl2.col1) when matched then update set tbl1.col2 = tbl2.col2;

  ```
 - 不支持多表 DML 语句，例如。

  ```shell
  -- FIRST：找到第一个满足条件的分支后，将数据插入该分支对应的表，不会再继续检查剩余分支的条件是否满足。
  insert /*+ parallel(3) enable_parallel_dml */ first when num = 1 then into t1 (num, name, money) when num <= 4 then into t2 (num, name, money) select * from t3;

  -- ALL：遍历所有匹配条件的分支，只要满足条件就会将数据插入对应的表。
  insert /*+ parallel(3) enable_parallel_dml */ all into t1 (num, name,money,pk_id) into t2  (num, name,money,pk_id) select PK_COL,COL1,COL2,COL3 from t3;

  ```

## 如果表上存在如下属性，也不支持并行 DML

- 触发器
 - 外键
 - CHECK 约束

## 带 UDF（User Defined Function）的 DML 执行要求运算必须串行的发生本地，无法走 PDML

#### 备注

可以通过 `explain extended ...` 输出结果中的 Note 一节查看一条 DML 语句没有走 PDML 的常见原因如下。

- PDML disabled because modify more than one target table in parallel is not supported yet。
 - PDML disabled because it is an insert-on-duplicate-key-update query。
 - PDML disabled because it is an dml ignore query。
  - PDML disabled because the merge statement update primary key or unique index key。
 - PDML disabled because the modified table has trigger。
 - PDML disabled because the modified table has foreign key/trigger/user defined function。
 - PDML disabled because it is an dml ignore query。
 - PDML disabled because the insert statement primary key has specified auto-increment column。

## 适用版本

OceanBase 数据库 V3.x、V4.x 版本。

上一篇

[如何查看 OceanBase 的 Batch 执行是否生效](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000002393953)

下一篇

[如何判断 Batch DML 是否使用了 ArrayBinding 协议及 Batch 成组执行优化](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000003929238) ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
