Oracle shared pool
一、oracle共享池包含了多種程式資料。例如:解析後的SQL和PL/SQL程式碼,系統引數和資料字典資訊。基本上資料庫的所有操作都和共享池有關。共享池主要包括library cache , data dictionary cache , server result cache , reserved pool。
二、庫快取(library cache)
1.庫快取中主要存放已經共享的可執行的SQL或者PL/SQ程式碼,還有一些控制結構例如lock和library cache handler。在共享伺服器模式,庫快取還包括了private SQL area(專有伺服器模式存在於PGA內)
2.共享SQL區:資料庫使用共享SQL區域來處理SQL語句的第一次出現,這個區域可以被所有使用者訪問,並且包括解析樹和執行計劃。
3.私有SQL區:每個發起SQL的會話都在PGA有私有SQL區域。
4當客戶端發起請求並連線到SGA時,首先檢視shared SQL area是否存在和請求SQL語句語法和語義相同的語句,如果存在,則直接使用相關的執行計劃;若不存在,則在shared SQL area申請一塊新的空間。
接著,根據伺服器的工作方式,分配private SQL area:共享伺服器模式下,部分private SQL area存在於SGA,專有伺服器下,存在與PGA中。
5.程式單元(program unit):庫快取中存放的可執行的PL/SQL程式碼和JAVA類程式碼。
三、共享池的記憶體分配和回收
1.當一條SQL語句被解析時,資料庫便分配共享池記憶體,分配的記憶體大小取決於SQL語句的複雜程度。
2.一般,共享池裡的內容根據LRU演算法來管理。
3.以下情況也會導致shared SQL area從共享池中移除:
(1).當對錶、聚簇表或者索引進行統計資訊收集時,在shared SQL area中存在的涉及到統計資訊收集的物件的內容,將會被清除。
(2).若shared SQL area中涉及到的物件被DDL語句修改,則資料庫將這些內容置為無效,當再次用到這些內容時,最佳化器會重新解析。
(3).如果全域性資料庫名(global database name)被改變,資料庫會將共享池內的資訊全部清除。
4.可以透過手工執行alter system flush shared pool語句來清空共享池內的內容,以達到重新啟動例項的效果。
四、資料字典緩衝區
1.資料字典是一組表和檢視的集合,這些表和檢視包括了資料庫的結構資訊、使用者資訊等,oracle在解析SQL語句的時候會頻繁的訪問資料字典表。
2.資料字典存放於資料字典緩衝區(dictionary buffer cache)和庫緩衝區(library cache)中。
3.資料字典緩衝區也稱為記錄行緩衝區(row cache),其緩衝資料記錄,而非整塊資料塊。
五、伺服器結果集緩衝區
1.伺服器結果集緩衝緩衝的是查詢結果記錄的集合,而不是資料塊的集合。
2.伺服器結果集緩衝包括SQL查詢結果集緩衝和PL/SQL函式結果集緩衝,但二者使用相同的架構。
3.客戶端也可以快取結果集,但是客戶端快取結果集是在應用層面且佔用的是客戶端的記憶體。
4.SQL查詢結果集快取:
(1)主要避免多次重複執行相同語句進行重複讀取資料塊和重計算結果集的消耗;
(2)可以透過result_cache提示來啟用該功能;
(3)透過result_cache_mode初始化引數來決定快取所有查詢結果集還是指定查詢結果集。
5.PL/SQL函式結果集快取:
主要節省重複查詢某函式造成的計算資源。
六、預留池(reserved pool)
預留池是oracle共享池內可以分配一塊連續的大的記憶體空間。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30167136/viewspace-1562302/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 理解Oracle Shared PoolOracle
- Oracle Shared Pool Memory ManagementOracle
- ORACLE SGA之shared poolOracle
- zt_Oracle shared pool internals_共享池_shared_poolOracle
- oracle優化--shared_pool (3)Oracle優化
- oracle優化--shared_pool (2)Oracle優化
- oracle優化--shared_pool (1)Oracle優化
- 【Shared Pool】使用DBMS_SHARED_POOL包將PL/SQL大物件儲存到Shared PoolSQL物件
- oracle 9i2 ? shared pool 巨大?Oracle
- oracle實驗記錄 (oracle 分析shared pool(1))Oracle
- oracle實驗記錄 (oracle 分析shared pool(2))Oracle
- _shared_pool_reserved_pct or shared_pool_reserved_size with ASMMASM
- ORACLE記憶體管理 之五 SGA variable pool,shared_pool,large_pool,java_poolOracle記憶體Java
- Oracle記憶體分配與使用小記(二)Shared Pool and Large PoolOracle記憶體
- SHARED POOL總結
- SHARED_POOL解析
- Oracle基礎包之DBMS_SHARED_POOL(十)Oracle
- zt_oracle shared pool分配機制_4031Oracle
- 使用DBMS_SHARED_POOL包將PL/SQL大物件儲存到Shared PoolSQL物件
- Oracle Shared Pool機制之——Latches, Locks, Pins and MutexesOracleMutex
- dbms_shared_pool keep物件到share pool中物件
- SHARED POOL 基礎知識
- 簡單分析shared pool(一)
- 簡單分析shared pool(二)
- 簡單分析shared pool(三)
- shared_pool_spare_free.sqlSQL
- oracle event heapdump_sga dump_shared pool_pga_ugaOracle
- Oracle記憶體結構(二)----Shared Pool的詳細資訊Oracle記憶體
- shared pool記憶體結構記憶體
- latch:shared pool的一點理解
- Shared Pool 的基本原理
- Shared Pool 的轉儲與分析
- 安裝DBMS_SHARED_POOL包
- PL/SQL Program Units and the Shared Pool (89)SQL
- 基於引數shared_pool_reserved_size進一步理解共享池shared pool原理
- Oracle記憶體結構(二)----Shared Pool的詳細資訊(轉)Oracle記憶體
- 《深入解析Oracle》第六章,Buffer Cache與Shared Pool原理Oracle
- shared_pool的sql命中率SQL