全部產品
Search
文件中心

PolarDB:開啟時空並行查詢

更新時間:Oct 16, 2024

對於巨量資料量、較複雜的時空查詢,GanosBase可直接利用PostgreSQL並行查詢的能力從而加速時空查詢。

並行查詢原理

PostgreSQL並行查詢是表級的並行,其並行查詢示意圖如下。

注意事項

  • 並行查詢的worker數量越大,查詢時CPU負載越重,對於CPU負載本身較重的情境建議woker數量設定為2較合適,即max_parallel_workers_per_gather=2。

  • 對於伺服器記憶體有限的高並發訪問,開啟並行查詢時,需要控制參數work_mem(min 64KB),確保並發訪問數量乘以並行worker數量乘以work_mem不超過伺服器記憶體的60%。

使用方法

開啟並行查詢的方法如下:

  1. 修改PostgreSQL設定檔postgresql.conf,啟用並行查詢參數。

    • 開啟max_parallel_workers參數,設定能夠開啟的並行worker總數量,須小於max_worker_processes的值,通常為8-32。

    • 開啟max_parallel_workers_per_gather參數,設定單個查詢gather最大並行度,須小於max_parallel_workers的值,通常為2-4。

    • 如果要開啟強制並行,須將force_parallel_mode設定為on。

    • 通過執行SQL語句控制單個表的並行粒度:alter table table_name set (parallel_workers=n)。

      說明

      “n”代表並行worker數,該值可參見max_parallel_workers_per_gather。

  2. 提高GanosBase相關函數的cost成本。

    在建立GanosBase模組擴充時,通常預設有個函數cost成本,如果表資料量較小,但函數屬於計算密集,並且適合開啟並存執行,此時預設不會開啟並行查詢,需要提高函數的cost成本後才能開啟並行查詢。