---
title: "并行查询的参数调优 - OceanBase 数据库 V4.3.5 | OceanBase 文档中心"
description: 并行查询的参数调优 OceanBase 的并行查询（PX）性能由以下两类参数（变量或配置项）控制： 并行度变量 ：决定查询执行时的 Worker 线程数量。 EXCHANGE（Shuffle）配置项 ：控制在每个 DFO 之间进行数据传输时的参数控制，也就是数据进行分发（Shuffle）时的内存控制。 参数配置核心逻…
image: https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*OSPzQ6GUQF4AAAAAQHAAAAgAeiGDAQ/original
---
切换语言

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

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

# 并行查询的参数调优

更新时间：2026-04-24 14:20:02

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

OceanBase 的并行查询（PX）性能由以下两类参数（变量或配置项）控制：

- **并行度变量**：决定查询执行时的 Worker 线程数量。
 - **EXCHANGE（Shuffle）配置项**：控制在每个 DFO 之间进行数据传输时的参数控制，也就是数据进行分发（Shuffle）时的内存控制。

**参数配置核心逻辑**：

- **并行度参数调优**：通过 `parallel_servers_target` 控制集群 PX 资源池大小。若频繁出现 PX 查询排队，可适当调大参数值。
 - **Shuffle 参数调优**：`dtl_buffer_size` 默认已适配大多数场景，仅在特殊需求（如低频大行传输）时调整，但不建议调整此参数。

## 并行度参数

### 核心参数：parallel_servers_target

该参数控制集群允许的 **最大可用并行 Worker 总数**。当查询请求的并行度（DOP）与当前已分配的 Worker 总和超过该值时，查询会被排队等待。

| **参数名称** | **描述** | **取值范围** | **默认值** | **配置建议** |
| --- | --- | --- | --- | --- |
| `parallel_servers_target` | 决定并行查询是否需要排队：若查询所需 Worker 数 + 当前总 Worker 数 ≤ 参数值，则直接执行；否则排队。 | [0, 9223372036854775807] | 0（目前会根据 CPU 个数计算得到，以实际大小为准） | 该参数主要是控制 PX 场景下，当准备进行并行查询时，如果没有足够 Worker 处理该查询，决定是否继续进行还是排队等待。 |

**示例：查看并行度参数值**

```shell
obclient> SHOW VARIABLES LIKE '%paral%';  

+-------------------------+-------+  
| Variable_name           | Value |  
+-------------------------+-------+  
| parallel_servers_target | 4     |  
+-------------------------+-------+  
1 rows in set  

```

**示例说明**：

- 示例中 `parallel_servers_target=4` 表示集群最多允许 4 个并行 Worker 同时运行。
 - 若查询请求 `DOP=3`，且当前已使用 2 个 Worker，则可直接执行；若已使用 3 个 Worker，则排队。

## EXCHANGE（Shuffle）参数

EXCHANGE（Shuffle）参数主要用于控制 **数据传输层（DTL）** 在 DFO（Data Flow Operator，数据流操作符）间进行数据分发（Shuffle）时的内存配置，例如调节传输时内存配置（如 Buffer）大小。OceanBase 通过 DTL 模块实现跨节点的数据传输功能。

### 核心参数：dtl_buffer_size

该参数控制 `EXCHANGE` 算子（如 Transmit 和 Receive）之间的数据传输 Buffer 大小。当数据达到该阈值时，触发传输以减少逐行发送的开销。

| **参数名称** | **描述** | **取值范围** | **默认值** | **配置建议** |
| --- | --- | --- | --- | --- |
| `dtl_buffer_size` | 控制 EXCHANGE 算子之间（即 Transmit 和 Receive 之间）发送数据时，每次发送数据的 Buffer 的大小。即当数据达到了该值上限才进行发送，减少每行传输的代价。 | [4K, 2M] | 64K | PX 场景下，EXCHANGE 之间发送数据依赖于该参数大小。一般无需修改，默认值已优化。如果是为了减少发送数据次数等可以尝试进行修改，但不建议修改。 |

**示例：查看 Shuffle 参数值**

```shell
obclient> SHOW PARAMETERS LIKE '%dtl%'\G  

*************************** 1. row ***************************  
         zone: zone1  
     svr_type: observer  
       svr_ip: 172.xx.xxx.xxx  
     svr_port: 2882  
         name: dtl_buffer_size  
    data_type: CAPACITY  
        value: 64K  
         info: to be removed  
      section: OBSERVER  
        scope: CLUSTER  
       source: DEFAULT  
  edit_level: DYNAMIC_EFFECTIVE  
1 row in set  

```

**示例说明**：

- `dtl_buffer_size=64K` 表示每 Buffer 最多暂存 64KB 数据后触发传输。
 - 调整该参数需权衡：增大可减少传输次数但占用更多内存，减小则增加传输频率但降低内存压力。

### 参数关联概念

1. **DFO（Data Flow Operator）**：

      - 数据流操作符，负责协调 PX 算子间的交互。
      - `EXCHANGE` 算子在 DFO 间进行数据分发（Shuffle）。
 2. **DTL（Data Transfer Layer）**：

      - 数据传输层，负责跨节点的数据传输。
      - `dtl_buffer_size` 影响 DTL 的传输效率和内存使用。

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