全部產品
Search
文件中心

PolarDB:並行資源控制策略配置

更新時間:Jul 06, 2024

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確定需要並存執行後,選取查詢的並行度,而不用於選擇是否需要並存執行。