并行资源控制策略配置

PolarDB支持通过多种策略控制单个查询或全局的总并行度,以保证在资源负载允许的情况下选择合理的并行度。

并行查询排队策略参数

max_parallel_workers为单个节点内允许同时运行的最大并行worker线程数,超过max_parallel_workers后新的并行查询将进入排队等待,任务队列调度策略为先入先出(FIFO)。

queuing_parallel_degree_limit为队列中允许的最大并行度,队列中并行Worker的总数量超过queuing_parallel_degree_limit后,则认为队列满,后续查询将被回退为串行执行。

pq_max_queuing_time为查询在队列中的最大等待时间,如果查询在队列中等待时间超过该值,会被立即移除队列并回退为串行执行。

并行度控制参数

参数

级别

说明

max_parallel_workers

Global

最大允许同时运行的并行worker线程数,超过该值后并行查询需要进入任务队列中等待。

  • 取值范围:[1-10000]

  • 默认值为CPU核数的2倍

queuing_parallel_degree_limit

Global

最大允许同时进入并行排队的并行度总和,超过该值后查询将被禁止并行查询,回退为串行执行。

  • 取值范围:[0-10000]

  • 默认值:64

pq_max_queuing_time

Global,Session

并行查询在队列中最大等待时间,等待时间超出该值后直接回退为串行执行。单位为毫秒。

  • 取值范围:[0-18446744073709551615]

  • 默认值:200

相关统计信息:

变量名

级别

描述

PQ_refused_over_total_workers

Session、Global

由于总Worker数限制没有启用并行的查询数。

PQ_refused_over_max_queuing_time

Session、Global

由于并行查询排队超时没有启动并行的查询数。

Total_running_parallel_workers

Global

当前正在运行的Parallel Worker的数目。

自适应调整并行度

支持根据查询代价以及当前资源负载选择合适的并行度,包含单机并行的并行度选择和多机并行的弹性调度策略,主要相关配置参数介绍如下:

参数

级别

说明

parallel_degree_policy

Global

设置单个查询的并行度配置策略,取值范围如下:

  • TYPICALPolarDB选择查询并行度时不会考虑数据库负载(如CPU使用率等),而尽可能与max_parallel_degree设置的并行度保持一致。

  • AUTOPolarDB会根据数据库负载(如CPU使用率等)来决定是否禁止并行查询计划,并会根据查询代价选择并行度。

  • REPLICA_AUTO(默认):仅只读节点会根据数据库负载(如CPU使用率等)决定是否禁止并行查询计划,并会根据查询代价选择并行度,而主节点不会开启并行查询。

parallel_workers_policy

session

弹性并行策略:

  • LOCAL:节点内并行,即单机并行。

  • AUTO:开启弹性并行,会根据集群分组内节点的实时负载信息做调度,本地节点计算资源不足时,会尝试选择其他有空闲资源的节点调度执行。查询代价超过阈值后选择多机并行。

  • MULTI_NODES:强制多机并行,最大并行度会随节点数增加而成倍增加,适用于海量数据的分析类大查询。

系统资源使用限制

AUTO策略下,PolarDB会根据数据库的CPU、内存或IOPS资源的使用率来决定是否禁止并行查询计划,并支持在需要并行执行的前提下,自定义并行查询的并行度选择策略。

参数

级别

取值

说明

loose_auto_dop_cpu_pct_hwm

Global

  • 取值范围:0~100

  • 默认值:70

CPU使用率阈值。若CPU使用率超过阈值,PolarDB会禁止并行查询计划。

loose_auto_dop_mem_pct_hwm

  • 取值范围:0~100

  • 默认值:90

内存使用率阈值。若内存使用率超过阈值,PolarDB会禁止并行查询计划。

loose_auto_dop_iops_pct_hwm

  • 取值范围:0-100

  • 默认值:80

IOPS使用率阈值。若IOPS使用率超过阈值,PolarDB会禁止并行查询计划。

loose_auto_dop_low_degree_cost

  • 取值范围:0~18446744073709551615

  • 默认值:500000

自动并行度选择策略。在确定需要并行执行后,PolarDB会根据如下标准选择查询并行度:

  • 当优化器估算查询的串行执行代价低于该值时,查询并行度为2。

  • 当优化器估算查询的串行执行代价大于或等于该值时,查询并行度将尽可能与max_parallel_degree设置的并行度保持一致。

说明

该参数仅用于在PolarDB确定需要并行执行后,选择查询的并行度,而不用于选择是否需要并行执行。