釋義Oracle 11r2中並行執行相關引數

sqysl發表於2016-06-10

因最近對現場某些伺服器進行診斷和調整,用到了這類引數,因此對這類引數做了詳盡的查閱和研究,現將該類引數釋義如下,以方便同行和自己參考,禁止轉載:

1、PARALLEL_ADAPTIVE_MULTI_USER

引數型別 Boolean
預設值 true
可修改性 ALTER SYSTEM
取值範圍 true | false


被設定為true時,使自適應演算法可用,該演算法被設計來改善使用並行的多使用者環境的效能。
該演算法在查詢開始時基於系統負載來自動減少被要求的並行度。實際的並行度基於預設、來自表或hints的並行度,然後除以一個縮減因數。該演算法假設系統已經在單使用者環境下進行了最優調整。表和hints用預設的並行度。


2、PARALLEL_AUTOMATIC_TUNING
引數型別 Boolean
預設值 false
可修改性 No
取值範圍 true | false


注意: PARALLEL_AUTOMATIC_TUNING已經被廢棄。保留它僅僅是為了向後相容。
當該引數設定為true時,Oracle決定控制並行執行的所有引數的預設值。除了設定這個引數,你必須確定系統中目標表的PARALLEL子句。Oracle於是就會自動調整所有後續的並行操作。
如果你在之前的版本里用了並行執行且現在該引數為true,那麼你將會因減少了共享池中分配的記憶體需求,而導致對共享池需求的減少。目前,這些記憶體會從large pool中分配,如果large_pool_size沒被確定,那麼,系統會自動計算出來。
作為自動調整的一部分,Oracle將會使parallel_adaptive_multi_user引數可用。如果需要,你也可以修改系統提供的預設值。


3、PARALLEL_DEGREE_LIMIT
引數型別 String
語法 PARALLEL_DEGREE_LIMIT = { CPU | IO | integer }
預設值 CPU
可更改性 ALTER SESSION, ALTER SYSTEM
是否基礎 No


在並行度自動調整的情況下,Oracle自動決定一個語句是否並行執行和用什麼並行度執行。最佳化器基於語句的資源需求自動決定一個語句的並行度。
然而,為了確保並行伺服器程式不會導致系統過載,最佳化器會限制使用的並行度。這個限制透過PARALLEL_DEGREE_LIMIT來強制實施。
值:
■ CPU
最大並行度被系統CPU數限制。計算限制的公式為PARALLEL_THREADS_PER_CPU *CPU_COUNT * 可用例項數(預設為簇中開啟的所有例項,但也能透過PARALLEL_INSTANCE_GROUP或service定義來約束),這是預設的。
■ IO
最佳化器能用的最大並行度被系統的IO容量限制。系統總吞吐除以每個程式的最大IO頻寬計算出。為了使用該IO設定,你必須在系統上執行DBMS_RESOURCE_MANAGER.CALIBRATE_IO過程。該過程將計算系統總吞吐和單個程式的最大IO頻寬。
■ integer
當自動並行度被啟用時,該引數的數字值確定最佳化器為一個SQL語句能選擇的最大並行度。PARALLEL_DEGREE_POLICY被設定為AUTO或LIMITED時,自動並行度才可以使用。


4、PARALLEL_DEGREE_POLICY
引數型別 String
語法 PARALLEL_DEGREE_POLICY = { MANUAL | LIMITED | AUTO }
預設值 MANUAL
可修改性 ALTER SESSION, ALTER SYSTEM
是否基礎 No


PARALLEL_DEGREE_POLICY確定是否開啟自動並行度,語句排隊和記憶體並行執行。
值:
注意:如果一個PARALLEL hint在語句級被使用,無論PARALLEL_DEGREE_POLICY值設定成什麼,自動並行度都將被開啟。
■ MANUAL
關閉自動並行度,語句排隊和記憶體並行執行。這恢復並行執行到11.2之前的行為。這是預設設定。
■ LIMITED
對某些語句開啟自動並行執行,但語句排隊和記憶體並行執行被關閉。自動並行度僅僅適用那些存取顯式用PARALELL語句標示預設並行度的表或索引的語句。並不存取這些被顯式標示預設並行度的表或索引的語句將保持手工(MANUAL)行為。
■ AUTO
開啟自動並行度,語句排隊和記憶體並行執行。


5、PARALLEL_EXECUTION_MESSAGE_SIZE
引數型別 Integer
預設值 Operating system-dependent
可行改性 No
值範圍 最小值 2148
       最大值: 32768, 但一些作業系統也許有一個較小值
Oracle RAC 多個例項必須有相同的值


PARALLEL_EXECUTION_MESSAGE_SIZE確定並行執行(前面指並行查詢,PDML,並行恢復,複製)所用資訊的大小。
在大多數平臺上,預設值如下:
■ 16384位元組,如果COMPATIBLE被設定為11.2.0或更高
■ 4096位元組如果COMPATIBLE被設定為小於11.2.0並且PARALLEL_AUTOMATIC_TUNING被設定為true
■ 2148位元組如果COMPATIBLE被設定為小於11.2.0並且PARALLEL_AUTOMATIC_TUNING被設定為false
預設值對大多數應用來說是足夠的。值越大,要求共享池越大。較大的值會帶來較好的效能,但會消耗較多的記憶體。因此,複製並不能從增加該值中受益。
注意:當PARALLEL_AUTOMATIC_TUNING被設定為TRUE時,資訊緩衝在大池(large pool)中分配。這種情況下,預設值一般是較高的。注意引數PARALLEL_AUTOMATIC_TUNING已經被廢棄。


6、PARALLEL_FORCE_LOCAL
引數型別 Boolean
預設值 false
可修改性 ALTER SESSION, ALTER SYSTEM
值範圍 true | false
是否基礎 No
PARALLEL_FORCE_LOCAL控制Oracle RAC環境下的並行執行。預設情況,被選擇執行一個SQL語句的並行伺服器程式能在簇中任何或所有Oracle RAC節點上操作。透過設定PARALLEL_FORCE_LOCAL為true,並行伺服器程式被限制從而都在查詢協調器駐留的同一個Oracle RAC節點上操作(語句被執行的節點上) 。


7、PARALLEL_INSTANCE_GROUP
引數型別 String
語法 PARALLEL_INSTANCE_GROUP = service_name | group_name
預設值 沒有預設值;並行執行在所有目前活動的例項上開啟
可修改性 ALTER SESSION, ALTER SYSTEM
值範圍 任何服務名或任何活動例項上INSTANCE_GROUPS引數中確定的任何組名
Oracle RAC 多個例項能有不同的值


PARALLEL_INSTANCE_GROUP是一個僅能在並行模式確定的引數。和服務或INSTANCE_GROUPS引數一起使用,它使你能限制並行查詢的操作到一定的例項數。注意INSTANCE_GROUPS引數已經被廢棄。該引數支援Oracle用來產生並行執行程式的並行例項組。如果和服務一起使用,並行操作將僅在服務中確定的例項上產生並行執行程式。如果和INSTANCE GROUPS一起使用,並行操作將僅在那些INSTANCE_GROUPS引數中確定了相匹配的組的例項上產生並行執行程式。
如果被賦予PARALLEL_INSTANCE_GROUP的值是不存在的服務或組名,那麼操作將會序列執行。沒有並行被使用。


8、PARALLEL_IO_CAP_ENABLED
引數型別 Boolean
預設值 false
可修改性 ALTER SESSION, ALTER SYSTEM
值範圍 true | false
是否基礎 No
Oracle RAC 多個例項能有不同的值


注意: PARALLEL_IO_CAP_ENABLED引數被廢棄了。保留它的目的僅僅是為了向後相容。PARALLEL_DEGREE_LIMIT引數設定為IO時,可以替代該引數。


PARALLEL_IO_CAP_ENABLED確定Oracle是否覆蓋預設並行度一直到IO系統支援的值。該新值基於資源管理器的IO校驗包的結果計算得出。如果PARALLEL_IO_CAP_ENABLED被設定為true並且資料庫的IO能力已經被校驗過,當IO能力不能支撐可用的CPU數時,則Oracle將減少預設並行度。為了校驗IO能力,用DBMS_RESOURCE_MANAGER.CALIBRATE_IO過程來測量系統的IO容量。Oracle計算並行度,以便不超過系統的IO容量。


9、PARALLEL_MAX_SERVERS
引數型別 Integer
預設值 PARALLEL_THREADS_PER_CPU * CPU_COUNT * concurrent_parallel_users * 5
可行改性 ALTER SYSTEM
值範圍 0 to 3600
Oracle RAC 多個例項可以有不同值


注意:該引數適用於單例項和RAC模式的並行執行。
PARALLEL_MAX_SERVERS確定一個例項並行執行程式和並行恢復程式的最大數。當需求增加時,Oracle資料庫從例項啟動時的程式數增加到該引數值。公式中,例項上賦予正在使用的concurrent_parallel_users的值和記憶體管理設定相關。如果自動記憶體管理被關閉(手工模式),那麼concurrent_parallel_users為1。如果PGA自動記憶體管理被開啟,那麼concurrent_parallel_users的值為2.如果除了PGA自動記憶體管理,全域性記憶體管理或SGA記憶體目標也被使用,那麼,concurrent_parallel_users為4。


如果你把該引數設定的太低,那麼,有些查詢也許在查詢期間沒有可用的並行執行程式可用。如果你把該引數設定太高,那麼,記憶體資源在峰值期間也許會短缺,這也會降低效能。


10、PARALLEL_MIN_PERCENT
引數型別 Integer
預設值 0
可修改性 ALTER SESSION
值範圍 0 to 100
Oracle RAC 多個例項能有不同的值


PARALLEL_MIN_PERCENT使得你確定並行執行需要並行執行程式數的最小百分比。設定該引數確保除非有足夠的資源可用,否則,不會執行並行操作。預設值0意味著沒程式的最小百分比被設定。
考慮以下設定:
PARALLEL_MIN_PERCENT = 50
PARALLEL_MIN_SERVERS = 5
PARALLEL_MAX_SERVERS = 10
如果十個並行執行程式中的8個處於繁忙狀態,僅兩個程式可用。如果接著你提交一個並行度8的查詢,那麼,最小50%不能被滿足。
你能和PARALLEL_ADAPTIVE_MULTI_USER引數一起使用該引數。在多使用者環境,一個單獨的使用者或應用能設定PARALLEL_MIN_PERCENT為一個有足夠的系統資源和可接受的並行度被返回時使用的最小值。


11、PARALLEL_MIN_SERVERS
引數型別 Integer
預設值 0
可修改性 ALTER SYSTEM
值範圍 0 to value of PARALLEL_MAX_SERVERS
Oracle RAC 多個例項可以有不同的值


注意:該引數使用單例項和RAC環境的並行執行。
PARALLEL_MIN_SERVERS確定例項上並行執行程式的最小數。該值是例項啟動時Oracle建立的並行執行程式的數目。


12、PARALLEL_MIN_TIME_THRESHOLD
引數型別 String
語法 PARALLEL_MIN_TIME_THRESHOLD = { AUTO | integer }
預設值 AUTO
可修改性 ALTER SESSION, ALTER SYSTEM
是否基礎 No


PARALLEL_MIN_TIME_THRESHOLD確定一個語句被考慮採用自動並行度前一個語句將用的最小執行時間。預設地,它被設定為10s。只有PARALLEL_DEGREE_POLICY被設定為AUTO或LIMITED時,自動並行度才被開啟。 


13、PARALLEL_SERVERS_TARGET
引數型別 Integer
預設值 PARALLEL_THREADS_PER_CPU * CPU_COUNT * concurrent_parallel_users * 2
可修改性 ALTER SYSTEM
值範圍 0 to PARALLEL_MAX_SERVERS
是否基礎 No


PARALLEL_SERVERS_TARGET確定語句排隊被採用前執行一個語句允許的並行伺服器程式數。當引數PARALLEL_DEGREE_POLICY被設定為AUTO,且必需的並行伺服器程式不可用時,Oracle將排隊要求並行執行的SQL語句。一旦系統上活的並行伺服器程式數等於PARALLEL_SERVERS_TARGETS,語句排隊將開始。預設地,PARALLEL_SERVERS_TARGETS被設定低於系統上允許的並行服務程式最大數(PARALLEL_MAX_SERVERS),以確保每個並行語句將獲得需要的並行服務資源,同時,也避免因為過多的並行伺服器程式數而導致系統過載。
一個例項上執行的預設並行度的併發並行使用者和記憶體管理設定相關。如果自動記憶體管理被關閉(手工模式),那麼,併發並行使用者數為1.如果PGA自動記憶體管理被開啟,併發並行使用者為2。如果除了PGA記憶體自動管理,還有全域性記憶體管理和SGA記憶體目標被使用,那麼,併發並行使用者數為4。
注意即使語句排隊被啟用,所有序列語句(非並行的)將立即執行。


14、PARALLEL_THREADS_PER_CPU
引數型別 Integer
預設值 Operating system-dependent, usually 2
可修改性 ALTER SYSTEM
值範圍 Any nonzero number


注意:這個引數適用於單例項和RAC環境的並行執行。
PARALLEL_THREADS_PER_CPU確定例項的預設並行度和並行自適應及負載均衡演算法。引數描述並行執行期間每個CPU能處理的並行執行程式或執行緒數。
預設值和平臺有關,且在大多數情況下是足夠的。當一個具有代表性的並行查詢執行,且機器出現過載現象時,那麼,你應該減少該引數的值。如果系統是IO限制的,你應該增加該引數。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8484829/viewspace-2118209/,如需轉載,請註明出處,否則將追究法律責任。

相關文章