Oracle

會話、DOP 和並行執行伺服器集之間的關係

  • January 14, 2017

並行執行的工作原理

一組中並行執行伺服器的數量是並行度(DOP)

文件中的“一套”是什麼意思?它與使用者會話有關係嗎?我的理解是一個會話只有一組,兩個會話有兩組,總會話的執行伺服器受parallel_servers_target的限制。那是對的嗎?

那句話肯定是不清楚的。我將“一組”解釋為一組操作,在並行計劃的上下文中也稱為數據流操作。一個並行查詢可能有多個數據流操作,因此一個會話可能包含多個集合。我推薦閱讀理解並行執行 - 第 1 部分

經常有人問這個問題:“如何並行?” 例如,昨晚執行該語句時使用的實際 Parallel Degree 是多少?事實上,這個問題並不那麼容易回答,因為它缺乏一些精確性。首先,有一個所謂的並行度 (DOP),由優化器在生成執行計劃時確定。有關如何確定此 DOP 的最新概述,請參見The Data Warehouse Insider 部落格,其中包括 Oracle 數據庫 11.2 中引入的最新自動並行度 (Auto DOP) 特性。

還有一個問題是,優化器可能會為每個執行計劃生成多個所謂的“數據流操作 (DFO)”,並且每個 DFO 都有自己的,可能不同的 DOP。

在每個 DFO 執行時,最多可以同時啟動兩個並行從站集,每個並行從站集由 DOP 數量的並行從站組成。

因此,對於並行執行的單個 SQL 語句,“並行性如何?”這個問題可能沒有單一的答案。因為優化器可能會將其分解為多個 DFO,每個 DFO 都有自己的 DOP。

引用自:https://dba.stackexchange.com/questions/161066