日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

計算節點范圍選擇與并行度控制

本文介紹了彈性跨機并行查詢(ePQ)如何進行計算節點范圍選擇以及并行度控制。

前提條件

支持的PolarDB PostgreSQL版的版本如下:

  • PostgreSQL 11(內核小版本1.1.20及以上)

  • PostgreSQL 14(內核小版本14.6.6.0及以上)

說明

您可通過如下語句查看PolarDB PostgreSQL版的內核小版本的版本號:

  • PostgreSQL 11

    show polar_version;
  • PostgreSQL 14

    select version();

簡介

PolarDB PostgreSQL版的彈性跨機并行查詢(ePQ)特性提供了精細的粒度控制方法,可以合理使用集群內的計算資源。在最大程度利用閑置計算資源進行并行查詢,提升資源利用率的同時,避免了對其它業務負載產生影響:

  • ePQ可以動態調整集群中參與并行查詢的計算節點范圍,避免使用負載較高的計算節點。

  • ePQ支持為每條查詢動態調整在計算節點上的并行度,避免ePQ并行查詢進程對計算資源的消耗影響到相同節點上的其他進程。

計算節點范圍選擇

參數說明

參數

說明

polar_px_nodes

用于指定參與ePQ的計算節點范圍,默認值為空,表示所有只讀節點都參與ePQ并行查詢。

說明
  • 通過以下命令,查看參與ePQ的計算節點范圍。

    SHOW polar_px_nodes;
  • 如果部分只讀節點負載較高,則可以通過修改polar_px_nodes參數設置僅特定幾個只讀節點參與ePQ并行查詢。

  • polar_px_nodes參數的合法格式是一個以英文逗號分隔的節點名稱列表。

polar_px_use_primary

用于設置讀寫節點是否參與ePQ并行查詢,取值如下:

  • ON:讀寫節點參與ePQ并行查詢。

  • OFF:讀寫節點不參與ePQ并行查詢。

說明
  • 該參數適用于PostgreSQL 14。

  • 執行以下命令,設置讀寫節點參與ePQ并行查詢。

    SET polar_px_use_primary TO ON;

polar_px_use_master

用于設置讀寫節點是否參與ePQ并行查詢,取值如下:

  • ON:讀寫節點參與ePQ并行查詢。

  • OFF:讀寫節點不參與ePQ并行查詢

說明
  • 該參數適用于PostgreSQL 11。

  • 執行以下命令,設置讀寫節點參與ePQ并行查詢。

    SET polar_px_use_master TO ON;

示例

  1. 安裝polar_monitor插件,用于獲取節點名稱。

    CREATE EXTENSION IF NOT EXISTS polar_monitor;
  2. 通過polar_monitor插件提供的集群拓撲視圖,查詢集群中所有計算節點名稱。

    SELECT name,slot_name,type FROM polar_cluster_info;

    查詢結果如下:

     name  | slot_name |  type
    -------+-----------+---------
     node0 |           | Primary
     node1 | standby1  | Standby
     node2 | replica1  | Replica
     node3 | replica2  | Replica
    (4 rows)
    說明

    其中:

    • Primary:表示讀寫節點。

    • Replica:表示只讀節點。

    • Standby:表示備庫節點。

  3. 使用負載較低的只讀節點node2node3參與ePQ并行查詢。

    SET polar_px_nodes = 'node2,node3';
    SHOW polar_px_nodes;

    結果顯示如下:

     polar_px_nodes
    ----------------
     node2,node3
    (1 row)

并行度控制

參數說明

參數

說明

polar_px_dop_per_node

用于設置當前會話中的ePQ查詢在每個計算節點上的執行單元(Segment)數量,每個執行單元會為其需要執行的每一個計劃分片(Slice)啟動一個進程。默認值為3,通用最佳實踐值為當前計算節點CPU核心數的一半。

說明
  • 如果計算節點的CPU負載較高時,可以酌情遞減該參數,控制計算節點的CPU占用率至80%以下。

  • 如果查詢性能不佳時,可以酌情遞增該參數,也需要保持計算節點的CPU占用率不高于 80%。否則可能會拖慢其他的后臺進程。

示例

  1. 創建一張表。

    CREATE TABLE test(id INT);
  2. 假設集群內有兩個只讀節點,polar_px_nodes參數為空,此時ePQ將使用集群內的所有只讀節點參與并行查詢。polar_px_dop_per_node參數的值為3,表示每個計算節點上將會有三個執行單元。執行計劃如下。

    SHOW polar_px_nodes;
     polar_px_nodes
    ----------------
    
    (1 row)
    
    SHOW polar_px_dop_per_node;
     polar_px_dop_per_node
    -----------------------
     3
    (1 row)
    
    EXPLAIN SELECT * FROM test;
                                      QUERY PLAN
    -------------------------------------------------------------------------------
     PX Coordinator 6:1  (slice1; segments: 6)  (cost=0.00..431.00 rows=1 width=4)
       ->  Partial Seq Scan on test  (cost=0.00..431.00 rows=1 width=4)
     Optimizer: PolarDB PX Optimizer
    (3 rows)

    從執行計劃中可以看出,兩個只讀節點上總計有六個執行單元(segments: 6)將會執行這個計劃中唯一的計劃分片slice1,表示總計會有六個進程并行執行當前查詢。

  3. polar_px_dop_per_node參數調整為4,再次執行查詢,兩個只讀節點上總計會有八個執行單元參與當前查詢。由于執行計劃中只有一個計劃分片slice1,則表示總計會有八個進程并行執行當前查詢。

    SET polar_px_dop_per_node TO 4;
    
    EXPLAIN SELECT * FROM test;
                                      QUERY PLAN
    -------------------------------------------------------------------------------
     PX Coordinator 8:1  (slice1; segments: 8)  (cost=0.00..431.00 rows=1 width=4)
       ->  Partial Seq Scan on test  (cost=0.00..431.00 rows=1 width=4)
     Optimizer: PolarDB PX Optimizer
    (3 rows)
  4. 設置polar_px_use_primary參數,讓讀寫節點也參與查詢,則讀寫節點上也將會有四個執行單元參與ePQ并行執行,集群內總計12個進程參與并行執行。

    SET polar_px_use_primary TO ON;
    
    EXPLAIN SELECT * FROM test;
                                       QUERY PLAN
    ---------------------------------------------------------------------------------
     PX Coordinator 12:1  (slice1; segments: 12)  (cost=0.00..431.00 rows=1 width=4)
       ->  Partial Seq Scan on test  (cost=0.00..431.00 rows=1 width=4)
     Optimizer: PolarDB PX Optimizer
    (3 rows)