基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
OceanBase 并行执行配置方式及优先级规则
更新时间:2026-04-07 20:57:20
OceanBase 数据库优化器支持通过并行执行优化 SQL 查询时间。并行度 DOP(Degree of Parallelism)用于描述并行资源量。在实际业务场景中,是否开启并行执行及 DOP 大小的确定需综合查询执行情况和业务需求,以经验为基础进行配置。
不支持并行的场景
OceanBase 目前在以下场景中禁止开启并行执行:
- 涉及 PL UDF 或 dblink 的查询:直接禁止并行。
- DAS 扫描的基表:不支持指定 DOP,计划形态中 DOP 固定为 1。
并行开启方式以及优先级
在支持并行的场景下,配置方式的优先级由高到低依次为:
- 表级并行 Hint 配置 DOP
- 全局并行 Hint 配置 DOP
- 系统变量配置 DOP
- Schema DOP
表级并行 Hint 配置 DOP
表级并行 Hint 可直接指定表对象的 DOP。SQL 语法如下:
/*+PARALLEL( @qb_name table_name dop_value )*/
示例:
-- Q1:为表 t1 和 t2 分别指定 DOP=8 和 DOP=4
SELECT /*+PARALLEL(t1 8) PARALLEL(t2 4)*/ *
FROM t1, t2
WHERE t1.c1 = t2.c1;
若查询中未通过表级 Hint 指定 DOP,则未指定表(如 Q2 中的 t2)将采用优先级更低的配置方式。
-- Q2:仅指定表 t1 的 DOP=8,表 t2 默认 DOP=1(若无其他方式生效)
SELECT /*+PARALLEL(t1 8)*/ *
FROM t1, t2
WHERE t1.c1 = t2.c1;
全局并行 Hint 配置 DOP
全局并行 Hint 可指定查询的默认 DOP 或并行度获取策略:
/*+PARALLEL(dop_value)*/ -- 指定固定 DOP
/*+PARALLEL(AUTO)*/ -- 启用 Auto DOP 策略
/*+PARALLEL(MANUAL)*/ -- 禁用 Auto DOP,仅依赖显式 Hint 或变量配置
示例:
-- Q3:全局指定 DOP=8,所有表均使用该值
SELECT /*+PARALLEL(8)*/ *
FROM t1, t2
WHERE t1.c1 = t2.c1;
-- Q4:全局启用 Auto DOP 策略,所有表根据算法自动计算 DOP
SELECT /*+PARALLEL(AUTO)*/ *
FROM t1, t2
WHERE t1.c1 = t2.c1;
-- Q5:表级 Hint 优先级高于全局 Hint
SELECT /*+PARALLEL(t1 8) PARALLEL(4)*/ *
FROM t1, t2
WHERE t1.c1 = t2.c1;
-- t1 使用 DOP=8,t2 使用全局指定的 DOP=4
-- Q6:表级 Hint 与 Auto DOP 策略的组合
SELECT /*+PARALLEL(t1 8) PARALLEL(AUTO)*/ *
FROM t1, t2
WHERE t1.c1 = t2.c1;
-- t1 使用 DOP=8,t2 根据 Auto DOP 策略自动计算 DOP
系统变量配置 DOP
策略配置
通过 parallel_degree_policy 系统变量(全局 GLOBAL 或会话 SESSION 级别)启用 Auto DOP 策略:
/* 在 GLOBAL 级别启用 Auto DOP */
SET global parallel_degree_policy = AUTO;
/* 在 SESSION 级别启用 Auto DOP */
SET session parallel_degree_policy = AUTO;
SET parallel_degree_policy = AUTO;
/* 在 GLOBAL 级别禁止 Auto DOP */
SET global parallel_degree_policy = MANUAL;
/* 在 SESSION 级别禁止 Auto DOP */
SET session parallel_degree_policy = MANUAL;
SET parallel_degree_policy = MANUAL;
启用后,表对象的 DOP 将自动计算。详细规则请参考:Auto DOP 策略的开启。
固定 DOP 配置
以下内部变量可强制设置查询或 DML 的并行度,但需满足条件:
- 未通过全局
PARALLELHint 指定 DOP。 - 未启用 Auto DOP 策略(即
parallel_degree_policy未开启)。
SET _enable_parallel_query = 1; -- 开启查询并行
SET _enable_parallel_dml = 1; -- 开启 DML 并行
SET _force_parallel_query_dop = 8; -- 固定查询 DOP
SET _force_parallel_dml_dop = 8; -- 固定 DML DOP
Schema DOP
当使用固定 DOP 策略时,若通过系统变量开启并行且设置 DOP = 1,则查询将采用表创建时指定的 DOP:
-- 开启并行但强制 DOP=1
SET _enable_parallel_query = 1;
SET _enable_parallel_dml = 1;
SET _force_parallel_query_dop = 1;
SET _force_parallel_dml_dop = 1;
此后查询将根据 ALTER 后的 DOP 值执行并行(如表 t1 使用 DOP=4,索引 idx1 使用 DOP=2)。
示例:
-- 表级 DOP 配置示例
CREATE TABLE t1(c1 INT, c2 INT, c3 INT) PARALLEL 8;
CREATE INDEX idx1 ON t1(c1);
-- 后续可调整表和索引的 DOP
ALTER TABLE t1 PARALLEL 4;
ALTER INDEX idx1 PARALLEL 2;