基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
并行查询的参数调优
更新时间:2026-04-24 14:20:02
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 处理该查询,决定是否继续进行还是排队等待。 |
示例:查看并行度参数值
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 参数值
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 数据后触发传输。- 调整该参数需权衡:增大可减少传输次数但占用更多内存,减小则增加传输频率但降低内存压力。
参数关联概念
DFO(Data Flow Operator):
- 数据流操作符,负责协调 PX 算子间的交互。
EXCHANGE算子在 DFO 间进行数据分发(Shuffle)。
DTL(Data Transfer Layer):
- 数据传输层,负责跨节点的数据传输。
dtl_buffer_size影响 DTL 的传输效率和内存使用。