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