認識PGA及PGA_AGGREGATE_TARGET [final]
一, PGA記憶體組成
程式全域性區PGA是供服務程式儲存資料及控制資訊的記憶體區域, PGA可分固定PGA和
可變PGA。可變PGA是一個記憶體堆,PGA的可變區實際上是我們最為關注的PGA部分。
透過x$ksmpp可以查詢可變PGA的分配和使用情況。它主要由:
1). 會話記憶體:用於存放會話的登入資訊以及其他相關資訊
2). 私有sql區
1.1) 永久區域: 這裡存放了相同SQL語句多次執行時都需要的一些遊標資訊,比如繫結
變數資訊、資料型別轉換資訊,SQL宣告等。這部分記憶體只有在遊標被關閉時才會被
釋放。
1.2) sql work area:含sort區、hash區等,對於DML事務,sql執行完畢就釋放該區域;
對於select則是記錄返回後或者查詢取消時釋放。 這部分大小依賴於SQL複雜度,
sort,hash使用及處理的行數及行的大小 等因素 。
3) 遊標和sql區域: 這裡的遊標是一塊記憶體,不是我們常指的"指標"。一個Oracle預編譯程式或OCI程式的應用開發人員能夠很明確的開啟一個遊標,或者控制一塊特定的私有SQL區,將他們作為程式執行的命名資源。另外,oracle隱含的為一些SQL語句產生的遞迴呼叫(讀取資料字典資訊)也使用共享SQL區。
PGA中我們最需要關注的就是私有SQL區域中的執行時區域(sql work area)。
二,PGA的主要消費者
oracle的應用程式或者使用者的應用程式在執行時,都可能顯示或者隱式地開啟cursor,
開啟cursor就需要分配sql area,私有sql區在cursor開啟時分配,關閉時釋放,實際上,資料庫的主要活動就是cursor的活動,簡單說來,使用者程式的任務執行和cursor的使用是PGA的主要消耗者。
server process去data dictionary cache查詢,將需要的讀到database buffer cache,
然後,在PGA構造遊標(結果集的指標),每一根指標都指向一個rowid,如果需要排序,
連線,一致性讀,則只需要對指標進行操作。所以,PGA是使用者最直接的使用體驗。
使用者所發出的請求,執行時,是在pga中執行(只有資料在buffer cache中)。若在pga
中命中(當某個session第三次執行相同的SQL語句時,則會把該SQL語句的遊標資訊轉移到該session的PGA中),則無須軟解析或者硬解析,此時俗稱為軟軟解析。 PGA中的遊標指向buffer cache中的資料行,返回時是一批一批返回,而非一條條。
-- 未完, 見評論部分 。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-759096/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- pga_aggregate_target 相關總結 -- Oracle PGAOracle
- How To Tune PGA_AGGREGATE_TARGET
- pga_aggregate_target的設定 (zt)
- pga_aggregate_target和_pga_max_size都不能絕對限制實際PGA的使用
- Tuning PGA_AGGREGATE_TARGET in Oracle 9iOracle
- 關於PGA_AGGREGATE_TARGET的引數說明
- 【TUNE_ORACLE】PGA_AGGREGATE_LIMIT詳解(一)PGA_AGGREGATE_TARGET的限制OracleMIT
- pga_aggregate_target和_pga_max_size都不能絕對限制實際PGA的使用--ora04030
- Final Cut Pro中文新手教程 (1) 基礎認識Final Cut Pro
- Oracle資料庫work area size & pga_aggregate_target引數Oracle資料庫
- Granules of pga_aggregate_target 494 cannot be more than memory_target (497)
- 認識Oracle控制檔案(10g) - finalOracle
- memory_max_target,memory_target,pga_aggregate_target,sga_target
- 認識Oracle控制檔案(10g) 2 - finalOracle
- 認識Oracle控制檔案(10g) 3 - finalOracle
- 【例項】之memory_target、sga_target,pga_aggregate_target關係
- PGA基礎知識
- PGA 文件及個人理解
- Final Cut Pro中文新手教程 (二) 素材視窗的認識
- pga知識點總結
- Final Cut Pro中文新手教程 (3) 預覽視窗的認識
- Final Cut Pro 中文新手教程(59) 媒體餘量的基本認識
- Final Cut Pro中文新手教程 (4) 檢查器視窗的認識
- pga/sga及元件值查詢元件
- PGA/UGA、SGA的一點知識
- freebsd 系統磁碟及gmirror認識
- SpringBoot-認識及入門Spring Boot
- 【SpringCloud】(八):認識Feign及使用SpringGCCloud
- 認識及操作SQL Server 資料庫SQLServer資料庫
- 認識node核心模組--全域性物件及Cluster物件
- 認知網路知識點及例題總結
- 全面認識oracle分割槽表及分割槽索引Oracle索引
- alter system set events 知識 [final]
- 傳說中的裸奔節–認識及體驗CSSCSS
- 認識CopyOnWriteArrayList
- 認識DockerDocker
- 認識jqueryjQuery
- JQuery認識jQuery