帮你快速理解、总结文档立即下载

并行查询系统变量

最近更新时间:2026-08-21 16:29:31
我的收藏

概述

本文集中列出 TDSQL Boundless 并行查询相关的系统变量。术语定义参见 并行查询概述
并行查询默认关闭,可通过设置 max_parallel_degree 大于0开启,或使用 PARALLEL HINT 在单条 SQL 内启用。完整 HINT 语法参见 优化器 Hints

并行度控制

TDSQL Boundless 中使用 DOP(Degree Of Parallelism)表示并行度,即查询中使用的并行 Worker 数量。TDSQL Boundless 目前支持手动设置并行度与 自适应并行 两种并行度控制策略。
变量名
级别
默认值
说明
max_parallel_degree
SESSION
0
单条查询的最大 DOP。设为0关闭并行;大于0表示开启。在开启了 自适应并行 时,如果 parallel_degree_policy 为 MANUAL 模式(手动设置并行度),该值表示查询的默认 DOP;如果 parallel_degree_policy 为 AUTO 模式(自动设置并行度),该值表示自动设置的 DOP 上限
max_parallel_workers
GLOBAL
10000
整个节点并行 Worker 总数上限。设为0全局禁用并行

阈值控制

变量名
级别
默认值
说明
parallel_plan_cost_threshold
SESSION
50000
串行代价大于或等于该值才考虑生成并行计划
parallel_scan_records_threshold
SESSION
10000
表预估访问行数大于或等于该值才将该表纳入并行扫描候选
parallel_scan_ranges_threshold
SESSION
2
预估可切分范围数大于或等于该值才使用并行扫描
parallel_scan_cost_threshold
SESSION
10000.0
并行扫描代价门控

并行度控制策略

变量名
级别
默认值
说明
parallel_degree_policy
SESSION
MANUAL
DOP 策略:MANUAL 使用 max_parallel_degree 作为固定 DOP;AUTO 由优化器基于扫描代价自动计算 DOP
parallel_plan_compare_serial_cost
SESSION
false
该值为真时,如果原始串行计划比并行计划代价更低,则此时会走串行计划;否则,默认会走代价最低的并行计划

功能开关

变量名
级别
默认值
说明
parallel_query_switch
SESSION
见下表
并行查询功能位掩码总开关,详细默认值见下方。该选项为开发者选项,请勿在生产环境使用
tdsql_enable_parallel_hash_join
SESSION
false
开启并行 Hash Join,允许优化器为合适的 JOIN 选择并行 Hash Join,详细参考 并行 Hash Join
single_delete_update_use_iterator
SESSION
false
单表 UPDATE / DELETE 是否使用算子执行模型,并行 DML 必须开启,详细参考 并行 DML
其中,parallel_query_switch 选项表及默认值如下:
选项
默认
说明
force
off
强制使用并行计划,跳过代价与行数阈值检查
subquery_pushdown
on
允许子查询完整下推到 Worker 并行执行
subquery_pre_evaluation
on
允许 Leader 预先执行可缓存的子查询并缓存结果供 Worker 复用
full_grouping_pushdown
on
当 Worker 间 GROUP BY 键值不重复时,将聚合完全下推到 Worker
maximum_slices
off
选优时偏好 Collector 最多的路径(最大化 Slice 数)
group_min_max_pushdown
on
支持 GROUP MIN MAX SCAN 使用并行计划
partition_group_min_max_pushdown
on
支持分区表上的 GROUP MIN MAX SCAN 使用并行计划
dynamic_range_parallel_scan
on
允许动态范围并行扫描
partition_parallel_scan
on
允许分区并行扫描
rep_group_parallel_scan
off
以 Replication Group 为最小分配单位,同一 Replication Group 的全部数据交给同一个并行 Worker
警告:
parallel_query_switch 是一个开发者选项。每个发布都可能调整开关的内容(包括添加或删除),请勿在管理工具或正规的维护脚本中使用。

使用方式

通用 SQL 语法示例:
-- 查看当前开关值
SHOW VARIABLES LIKE 'parallel_query_switch';

-- 强制并行(跳过所有阈值检查)
SET parallel_query_switch = 'force=on';

-- 关闭子查询下推到 Worker 执行
SET parallel_query_switch = 'subquery_pushdown=off';