---
title: "并行开启方式及优先级 - OceanBase 数据库 V4.5.0 | OceanBase 文档中心"
description: 并行开启方式及优先级 OceanBase 数据库优化器支持通过并行执行来优化 SQL 查询时间。在优化器中，可以使用并行度 DOP（Degree of Parallel）来描述并行资源量。在实际业务场景中，关于是否需要开启并行执行以及所需的 DOP 大小，需要综合考虑查询的执行实际情况和业务需求，以经验为基础来确定所…
---
切换语言

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

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.5.0

# 并行开启方式及优先级

更新时间：2026-02-07 10:40:00

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.5.0/zh-CN/700.reference/1000.performance-tuning-guide/500.sql-optimization/300.distributed-execution-plan/500.parallel-execution.md)  

OceanBase 数据库优化器支持通过并行执行来优化 SQL 查询时间。在优化器中，可以使用并行度 DOP（Degree of Parallel）来描述并行资源量。在实际业务场景中，关于是否需要开启并行执行以及所需的 DOP 大小，需要综合考虑查询的执行实际情况和业务需求，以经验为基础来确定所需的并行度。

OceanBase 数据库目前支持通过 Auto DOP、Hint、系统变量、Schema DOP 等多种方式对查询开启并行执行。但在如下场景中暂不支持并行：

- 当涉及 PL UDF/dblink 的场景时，禁止查询开启并行执行。
 - 对于使用 DAS 扫描的基表，不支持指定并行度，在计划形态上显示并行度为 1。

在查询支持并行执行的前提下，多种并行开启方式优先级由高到低的顺序如下：

- 表级并行 Hint 配置 DOP
 - 全局并行 Hint 配置 DOP
 - 系统变量配置 DOP
 - Schema DOP

## 表级并行 Hint 配置 DOP

表级并行 Hint 配置 DOP 是指在 Hint 中直接指定表对象的并行度。基本 SQL 语法如下：

```sql
/*+PARALLEL ( @qb_name table_name dop_value)*/

```

例如查询 Q1 分别指定表 `t1` 和 `t2` 分别按照 DOP = 8 及 DOP = 4 并行执行。示例如下：

```shell
Q1: SELECT /*+PARALLEL(t1 8) PARALLEL(t2 4)*/ * FROM t1, t2 WHERE t1.c1 = t2.c1;

```

对于查询中没有使用 Hint 指定并行度的表，会按照其它优先级更低的方法确定 DOP。例如查询 Q2 仅指定表 `t1` 按照 DOP = 8 并行执行，如果没有以其它方式开启并行，表 `t2` 将以 DOP = 1，即不开启并行的方式进行扫描。

```shell
Q2: SELECT /*+PARALLEL(t1 8)*/ * FROM t1, t2 WHERE t1.c1 = t2.c1;

```

## 全局并行 Hint 配置 DOP

全局并行 Hint 用于指定查询默认使用的并行度。基本 SQL 语法如下：

```sql
/*+PARALLEL ( dop_value )*/
/*+PARALLEL ( AUTO )*/
/*+PARALLEL ( MANUAL )*/

```

例如查询 Q3 中 `PARALLEL( 8 )` 指定查询中表 `t1` 和 `t2` 均使用 DOP = 8。

全局并行 Hint 也可以指定查询使用的并行度获取策略，例如查询 Q4 中 `PARALLEL ( AUTO )` 指定查询中所有表使用 Auto DOP 的并行度获取策略。

由于全局并行 Hint 优先级低于表级并行 Hint，当同时存在全局和表级并行 Hint 时，全局 Hint 仅对没有表级 Hint 生效的表上生效。例如查询 Q5 中表 `t1` 因为表级 Hint 而使用 DOP = 8，表 `t2` 因为全局 Hint 而使用并行度 DOP = 4；查询 Q6 中，表 `t1` 因表级 Hint 使用 DOP = 8，表 `t2` 根据 Auto DOP 策略自动获取 DOP 值。

```shell
Q3: SELECT /*+PARALLEL(8)*/ * FROM t1, t2 WHERE t1.c1 = t2.c1;
Q4: SELECT /*+PARALLEL(AUTO)*/ * FROM t1, t2 WHERE t1.c1 = t2.c1;
Q5: SELECT /*+PARALLEL(t1 8) PARALLEL(4)*/ * FROM t1, t2 WHERE t1.c1 = t2.c1;
Q6: SELECT /*+PARALLEL(t1 8) PARALLEL ( AUTO )*/ * FROM t1, t2 WHERE t1.c1 = t2.c1;

```

## 系统变量配置 DOP

并行度相关的系统变量有两种，分别用于 DOP 获取策略配置与固定 DOP 配置。

DOP 获取策略配置通过配置在 `GLOBAl` 或 `SESSION` 级别的 `parallel_degree_policy` 变量来启用 Auto DOP 策略。Auto DOP 策略下，将按照一定算法计算得到表对象的 DOP 值。详细信息，请参见 [Auto DOP 策略的开启](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004478602)。

如果通过全局 `PARALLEL` Hint 指定 DOP 或开启 Auto DOP 策略，又或者通过 `parallel_degree_policy` 变量开启了 Auto DOP 策略，则固定 DOP 的配置将无效。对于其他场景，可以通过如下内部系统变量对查询或 DML 使用的并行度进行配置。示例如下：

```shell
SET _enable_parallel_query = 1;
SET _enable_parallel_dml = 1;
SET _force_parallel_query_dop = 8;
SET _force_parallel_dml_dop = 8;

```

## Schema DOP

当使用固定 DOP 策略，并且使用如下内部系统变量配置开启并行，但设置 DOP = 1 时，则查询将使用创建表时指定的 DOP 对表的对象开启并行执行。

```shell
SET _enable_parallel_query = 1;
SET _enable_parallel_dml = 1;
SET _force_parallel_query_dop = 1;
SET _force_parallel_dml_dop = 1;

```

如下示例中，创建表 `t1` 指定表 DOP = 8。使用 `ALTER TABLE` 调整表 `t1` 的 DOP 为 4，使用 `ALTER INDEX` 调整索引 `idx1` 的 DOP 为 2，则之后的查询将使用调整后的 DOP 对表的对象和索引开启并行执行。

```shell
CREATE TABLE t1(c1 INT, c2 INT, c3 INT) PARALLEL 8;
CREATE INDEX idx1 ON t1(c1);
ALTER TABLE t1 PARALLEL 4;
ALTER INDEX idx1 PARALLEL 2;

```

## 相关文档

[Auto DOP](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004478602)

 上一篇 下一篇 ![有帮助](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) 咨询热线
