PARALLEL_MIN_PERCENT 如何影響並行執行?
PARALLEL_MIN_PERCENT 允許您指定並行執行所需的請求並行執行程序數的最小百分比。設置此參數可確保除非有足夠的資源可用,否則不會執行並行操作。預設值 0 表示未設置最小程序百分比。
考慮以下設置:
PARALLEL_MIN_PERCENT = 50
PARALLEL_MIN_SERVERS = 5
PARALLEL_MAX_SERVERS = 10
如果 10 個並行執行程序中有 8 個忙,則只有 2 個程序可用。如果您隨後請求並行度為 8 的查詢,則不會滿足最低 50%。
$$ PARALLEL_MIN_SERVERS $$指定並行執行所需的請求並行執行程序的最小百分比。預設值為 0,如果沒有可用的並行伺服器程序,則並行語句將串列執行。
如果查詢執行時至少 50% 的伺服器不可用於查詢,會發生什麼情況?查詢是排隊的,是串列執行的,還是拋出諸如可用的並行查詢從站不足之類的錯誤?
我相信對於該配置,您會收到如下錯誤:
ORA-12827: 可用的並行查詢從站不足
如果伺服器上的並行配置不同,則 DOP 可能會降級。在某些情況下,如果沒有足夠的 PX 伺服器可用,它將被降級以串列執行。這裡有幾個例子
parallel_degree_policy=MANUAL
:由於只有 12 台可用的 PX 伺服器,因此該語句從 DOP=8 降級為 DOP=6,並獲得所有 12 台可用的 PX 伺服器。
考慮此時送出的另一個查詢,DOP=8。儘管此查詢需要 16 台 PX 伺服器,但由於沒有可用的 PX 伺服器剩餘,它不會給出任何結果。此查詢被降級為 DOP=1 並連續執行。
我在執行自己的程式碼時經歷過。查看 DOP 何時降級的一種方法是通過 SQL 監視器。以下是您可以看到的一些消息範例:
由於自適應 DOP,350 DOP 降級
351 DOP 降級由於資源管理器最大 DOP
352 DOP 由於程序數不足而降級
353 DOP 降級,因為從站未能加入