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線程數,超過該值後並行查詢需要進入任務隊列中等待。
|
queuing_parallel_degree_limit | Global | 最大允許同時進入並行排隊的並行度總和,超過該值後查詢將被禁止並行查詢,回退為串列執行。
|
pq_max_queuing_time | Global,Session | 並行查詢在隊列中最大等待時間,等待時間超出該值後直接回退為串列執行。單位為毫秒。
|
相關統計資訊:
變數名 | 層級 | 描述 |
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 | 設定單個查詢的並行度配置策略,取值範圍如下:
|
parallel_workers_policy | session | 彈性並行策略:
|
系統資源使用限制
AUTO策略下,PolarDB會根據資料庫的CPU、記憶體或IOPS資源的使用率來決定是否禁止並行查詢計劃,並支援在需要並存執行的前提下,自訂並行查詢的並行度選擇策略。
參數 | 層級 | 取值 | 說明 |
loose_auto_dop_cpu_pct_hwm | Global |
| CPU使用率閾值。若CPU使用率超過閾值,PolarDB會禁止並行查詢計劃。 |
loose_auto_dop_mem_pct_hwm |
| 記憶體使用量率閾值。若記憶體使用量率超過閾值,PolarDB會禁止並行查詢計劃。 | |
loose_auto_dop_iops_pct_hwm |
| IOPS使用率閾值。若IOPS使用率超過閾值,PolarDB會禁止並行查詢計劃。 | |
loose_auto_dop_low_degree_cost |
| 自動並行度選擇策略。在確定需要並存執行後,PolarDB會根據如下標準選取查詢並行度:
說明 該參數僅用於在PolarDB確定需要並存執行後,選取查詢的並行度,而不用於選擇是否需要並存執行。 |