PGA 記憶體自動管理

2021-08-27 09:29:24 字數 1338 閱讀 3325

pga 記憶體自動管理

sql 工作區可以是自動的、全域性的管理。dba 只要設定引數 pga_aggregate_target 給乙個例項的 pga 記憶體指定總的大小。

設定這個引數後,oracle 將它作為乙個總的全域性限制值,盡量使所有 oracle 服務程序的 pga 記憶體總數不超過這個值。

在這個引數出現之前,dba 要調整引數sort_area_size、 hash_area_size, 、 bitmap_merge_area_size 和

create_bitmap_area_size(關於這些引數,我們會在後面介紹),使效能和 pga 記憶體消耗最佳。對這些引數的調整是非常麻煩

的,因為即要考慮所有相關的操作,使工作區適合它們輸入資料大小,又要使 pga 記憶體不消耗過大導致系統整體效能下降。

9i 以後,通過設定了引數 pga_aggregate_target,使所有會話的工作區的大小都是自動分配。同時,所有*_area_size 參

數都會失效。在任何時候,例項中可用於工作區的 pga 記憶體總數都是基於引數 pga_aggregate_target 的。工作區記憶體總數等於

引數 pga_aggregate_target 的值減去系統其他元件(如分配給會話的 pga 記憶體)的記憶體消耗。分配給 oracle 程序的 pga 記憶體

大小是根據它們對記憶體的需求情況來的。

引數 workarea_size_policy 決定是否使用 pga_aggregate_target 來管理 pga 記憶體。它有兩個值:auto 和 manual。預設是

auto,即使用 pga_aggregate_target 來管理 pga 記憶體。其實,從引數 workarea_size_policy 的名字上可以看出,oracle 的 pga

記憶體自動管理只會調整工作區部分,而非工作區部分(固定 pga 區)則不會受影響。

還有注意一點就是:10g 之前,pga_aggregate_target 只在專用服務模式下生效。而 10g 以後,pga 記憶體自動管理在專有服

務模式(dedicated server)和 mts 下都有效。另外,9i 在 openvms 系統上還不支援 pga 記憶體自動管理,但 10g支援。

設定了 pga_aggregate_target 以後,每個程序 pga 記憶體的大小也是受限制的:

o序列操作時,每個程序可用的 pga 記憶體為min(pga_aggregate_target * 5%, _pga_max_size/2),其中隱含引數

_pga_max_size的預設值是200m,同樣不建議修改它。

o並行操作時,並行語句可用的pga記憶體為pga_aggregate_target * 30% / dop (degree of parallelism 並行度)

理解PGA(1)PGA記憶體作用和構成

當客戶端向伺服器傳送連線請求,伺服器監聽到客戶端的請求,在專用伺服器模式下,會在伺服器端衍生乙個server process來 客戶的請求,server process進而向例項發起連線,建立會話,而pga就為server process所分配和使用。pga,這p,或譯之程式,或翻為私有,角度不同而...

理解PGA(1)PGA記憶體作用和構成

當客戶端向伺服器傳送連線請求,伺服器監聽到客戶端的請求,在專用伺服器模式下,會在伺服器端衍生乙個server process來 客戶的請求,server process進而向例項發起連線,建立會話,而pga就為server process所分配和使用。pga,這p,或譯之程式,或翻為私有,角度不同而...

PGA管理和調整

在oracle 9i以後 支援兩種pga 管理支援兩種管理模式,一重就是手動管理模式,另一種就是自動管理模式。1.pga 手動管理模式 所謂手動管理模式就是手動設定pga裡的各個模組 sort area size hash area size bitmap merge are size 等 的大小值...