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

自适应并行度

最近更新时间:2026-08-21 10:08:30
我的收藏

概述

自适应并行(Auto DOP)是 TDSQL Boundless 并行查询的自动并行度(Degree Of Parallelism, DOP)能力。
在未开启 Auto DOP 时,单条查询的 DOP 由 max_parallel_degree 固定指定;开启 Auto DOP 后,优化器基于扫描代价自动计算 DOP,避免用户手动调优。
本文描述 Auto DOP 的触发条件、限制、系统变量,如果想要了解如何通过 optimizer trace 分析 Auto DOP 决策过程,请参考 并行查询计划进阶解读
注意:
自适应并行度当前为邀测特性,如需体验请联系 腾讯云技术支持

使用限制

自适应并行只在解析后的并行度为 AUTO 时生效,开启方式有两类:
parallel_degree_policy = AUTO
使用 HINT 显式指定 AUTO,例如 PARALLEL(auto)PARALLEL(@qb auto)PARALLEL(t auto DYNAMIC_RANGE)PARALLEL(t auto PARTITION)
详细 Hint 编写方式可以参考 优化器 Hints
除此之外,需要注意以下限制:
表级 Auto DOP 只对部分扫描路径(即 DYNAMIC_RANGEPARTITION 两种并行扫描类型,对扫描类型的介绍请参考 并行查询概述)生效。
join 级 Auto DOP 只对 NESTED_LOOP_JOIN、NESTED_LOOP_SEMIJOIN_WITH_DUPLICATE_REMOVAL 和 BKA_JOIN 生效,不会对 HASH_JOIN 做额外的 DOP 调整。
如果 query block 或表级 HINT 已经显式指定了数值 DOP,则 Auto DOP 不再继续计算;NO_PARALLEL() 也会直接关闭该对象上的 Auto DOP。
分区并行扫描的 DOP 上限不会超过 min(max_parallel_degree, part_num);当 part_num 为 0 时直接 abort 为 no_partitions。
AUTO 在 PARALLEL HINT 的上下文中会被当作关键字处理。如果表名、库名或别名本身叫 auto,在 HINT 里需要使用反引号,详细参考 优化器 Hints

系统变量

Auto DOP 引入了以下两个系统变量,两者均为 SESSION 级、支持 HINT 修改,并且会随并行计划一起序列化到远端节点。纯属性(默认值/取值范围/级别)参见 并行查询系统变量,本节仅描述行为语义。

parallel_degree_policy

用途:控制并行度的决定方式。
可选值
MANUAL:使用 max_parallel_degree 作为固定 DOP。
AUTO:根据扫描代价自动计算 DOP,会将表级别的 DOP 不断调整,直到每个 Worker 的扫描代价降低到系统变量 parallel_scan_cost_threshold 以下。当 DOP 继续提升将超过 max_parallel_degree ,或优化器计算发现继续提升 DOP 无法降低扫描代价时,将会停止增加 DOP,防止系统资源浪费。
默认值:MANUAL。
补充说明
即使 parallel_degree_policy = MANUAL,仍然可以通过 PARALLEL(auto)PARALLEL(@qb auto) 在语句级启用 Auto DOP。
如果 query block 或表级 HINT 显式给出了数值 DOP,则该显式值优先,不再走 Auto DOP。

parallel_scan_cost_threshold

用途:控制并行扫描的代价阈值。
行为
AUTO 模式下,优化器会尝试提升 DOP,直到每个 Worker 的扫描代价下降到这个阈值以下,或者已经没有继续提升的收益。
MANUAL 模式下,串行扫描代价低于该阈值的表不会进入并行扫描(该剪枝仅在未启用 Auto DOP 的表上生效)。