Ganos支持利用多個CPU提升查詢或計算性能,這種特性被稱為并行操作。Ganos支持并行執行SQL語句和并行操作raster對象。
并行執行SQL語句
原理
PostgreSQL支持利用多個CPU生成并行的查詢計劃,并將執行任務分配到多個CPU上以提升性能。
適用場景
SQL語句并行執行非常適合在大量的raster對象中過濾出符合空間范圍要求或屬性要求的raster對象,能夠極大地降低查詢時間。
適用范圍
所有Ganos Raster的只讀函數(例如屬性查詢)都支持并行查詢。
并行操作Raster對象
原理
通常情況下raster對象并行操作技術可以應用于單個raster對象的操作過程,通過多個CPU并行計算raster對象中的子集內容,從而降低整個raster對象的操作時間。每個子集內容的計算均獨立運行,當所有子集執行完成,整個raster對象并行操作過程也同時結束。
適用場景
raster非常大,操作耗時很長的場景。
適用范圍
目前支持raster對象并行操作的函數包括:
使用前準備工作
設置Prepared狀態最大事務數
通過參數max_prepared_transactions設置Prepared狀態最大事務數。該參數默認值為0,建議設置為與max_connections參數一樣,確保每個連接都有一個Prepared事務可以處理。
說明修改本參數后需要重啟實例。
設置并行度
如果支持并行操作的函數未指定并行度或指定并行度為0,則使用GUC(Grand Unified Configuration)參數ganos.parallel.degree的值作為默認的并行度。ganos.parallel.degree參數默認值為1, 表示不支持并行執行。
您也可以在支持并行操作的函數中指定并行度參數為一個正整數,可以將raster對象的計算任務拆分為并行任務執行。示例如下:
select ST_ImportFrom('chunk_table','OSS://<akxxxx>:<ak_secretxxxx>@oss-cn-beijing-internal.aliyuncs.com/mybucket/data/image.nc:hcc', '{}', '{"parallel": 4}');
設置事務一致性
GUC參數ganos.parallel.transaction用于指定并行事務級別,取值如下:
transaction_commit(默認值):支持并行事務根據主事務進行提交或回滾。
fast_commit:不支持并行事務回滾。
您可以使用ST_CreateChunkTable函數預先創建塊表以達到最佳性能。
如果并行函數結果不支持匿名臨時塊表,請預先創建塊表并在存儲選項中的chunktable參數中指定該塊表。