一、并行度控制
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';