Oracle記憶體體系結構
SGA(System Global Area) : SGA被所有伺服器和後臺程式共享, 它包含了可以在使用者之間共享的控制資訊以及資料。 例如:快取的資料塊和共享SQL區
SGA包含以下記憶體區域:
a. Shared pool: Caches various constructs that can be shared among users
包含了: 庫快取
-Shared SQL area
資料字典快取
控制結構
b. Database buffer cache: Caches blocks of data retrieved from the database
c. KEEP buffer pool: A specialized type of database buffer cache that is tuned to retain blocks of data in memory for long periods of time
d. RECYCLE buffer pool: A specialized type of database that is tuned to recycle or remove block from memory quickly
e. nK buffer cache: One of several specialized type of database buffer cache that is designed to hold block sizes different than the default database block size
f. Redo log buffer: caches redo information(used for instance recovery) util it can be written to the physical redo log files stored on the disk
g. Large pool: Option area that provides large memory allocations for certain large processes, such as Oracle backup and recovery operations, and I/O server process
大池專門用於以下情況:
大池專門用於以下情況:
? 共享伺服器連線,用於在SGA 中分配UGA 區
? 語句的並行執行,允許分配程式間的訊息緩衝區,這些緩衝區用於協調並行查詢伺服器。
? 備份,在某些情況下用於RMAN 磁碟I/O 緩衝區。
可以看到,這些記憶體分配都不應該在LRU 緩衝區池中管理,因為LRU 緩衝區池的目標是管理小塊的
記憶體。例如,對於共享伺服器連線記憶體,一旦會話登出,這個記憶體就不會再重用,所以應該立即返回到池
中。另外,共享伺服器UGA 記憶體分配往往“很大”。如果檢視前面使用SORT_AREA_RETAINED_SIZE 或
PGA_AGGREGATE_TARGET 的例子,可以看到,UGA 可能擴張得很大,成為絕對大於4 KB 的塊。把MTS
記憶體放在共享池中,這會導致把它分片成很小的記憶體,不僅如此,你還會發現從不重用的大段記憶體會導致
可能重用的記憶體老化。這就要求資料庫以後多做更多的工作來重建記憶體結構。
對於並行查詢訊息緩衝區也是如此,因為它們不能根據LRU 原則來管理。並行查詢訊息緩衝區可以
分配,但是在使用完之前不能釋放。一旦傳送了緩衝區中的訊息,就不再需要這個緩衝區,應該立即釋放。
對於備份緩衝區更是如此,備份緩衝區很大,而且一旦Oracle 用完了這些緩衝區,它們就應該“消失”。
使用共享伺服器連線時,並不是一定得使用大池,但是強烈建議你使用大池。如果沒有大池,而且使
用了一個共享伺服器連線,就會像Oracle 7.3 及以前版本中一樣從共享池分配空間。過一段時間後,這會
導致效能惡化,一定要避免這種情況。如果DBWR_IO_SLAVES 或者PARALLEL_MAX_SERVERS 引數設
置為某個正值,大池會預設為某個大小。如果你使用了一個用到大池的特性,建議你手動設定大池的大小。
i. Java pool: Used for all session-specific Java code and data in the Java Virtual Machine(JVM)
j. Streams pool: Used by Oracle Streams to store information required by capture and apply
在不關閉例項的情況下, database buffer cache, the shared pool, large pool, the Java pool和Streams pool的大小可以被改變(SGA的動態基礎架構)。Oracle資料庫使用初始化引數來建立管理記憶體結構。 最簡單的管理記憶體的方法是允許資料庫自動管理,調整。 我們只需要設定一個目標記憶體的初始化大小(MEMORY TARGET)和一個最大記憶體的初始化引數(MEMORY_MAX_TARGET)。
PGA: 程式當中包含資料以及控制資訊的記憶體區域。 PGA是程式開始執行時的專享記憶體區域, PGA的訪問是排他的。每一個伺服器程式和後臺程式都有它自己的PGA。
PGA包含兩個最主要的區域:stack space(棧空間?)和User Global Area(UGA)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8520577/viewspace-761603/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle OCP(39):Database 記憶體結構OracleDatabase記憶體
- Oracle - 資料庫的記憶體結構Oracle資料庫記憶體
- 記憶體結構記憶體
- Oracle面試寶典-記憶體結構篇Oracle面試記憶體
- Postgresql資料庫體系結構-程式和記憶體結構SQL資料庫記憶體
- Oracle記憶體結構(四)----如何獲得Oracle各記憶體段的內部資訊(轉)Oracle記憶體
- Oracle體系結構學習筆記Oracle筆記
- 結構體記憶體對齊結構體記憶體
- 【JVM】堆體系結構及其記憶體調優JVM記憶體
- JVM記憶體結構JVM記憶體
- PostgreSQL:記憶體結構SQL記憶體
- oracle體系結構(轉)Oracle
- MySQL整體架構與記憶體結構MySql架構記憶體
- JVM記憶體結構、Java記憶體模型和Java物件模型JVM記憶體Java模型物件
- 0718_oracle 體系結構Oracle
- 3:Oracle體系結構(邏輯結構)Oracle
- 【MEMORY】Oracle記憶體結構資源常用檢視及sqlOracle記憶體SQL
- Oracle記憶體結構(一)----SGA的區域資訊(轉)Oracle記憶體
- 理解JVM(一):記憶體結構JVM記憶體
- JVM(七):JVM記憶體結構JVM記憶體
- JVM記憶體結構劃分JVM記憶體
- 【Oracle體系結構】 Oracle19C 系統結構介紹Oracle
- C++ struct結構體記憶體對齊C++Struct結構體記憶體
- c 結構體記憶體對齊詳解結構體記憶體
- Oracle記憶體結構(二)----Shared Pool的詳細資訊(轉)Oracle記憶體
- Oracle記憶體結構(三)----Process Memory的詳細資訊(轉)Oracle記憶體
- Oracle OCP(37):Database 體系結構OracleDatabase
- 【JVM之記憶體與垃圾回收篇】JVM與Java體系結構JVM記憶體Java
- STM32記憶體結構介紹和FreeRTOS記憶體分配技巧記憶體
- JVM學習(一)——記憶體結構JVM記憶體
- JVM之記憶體結構詳解JVM記憶體
- JVM及其記憶體結構劃分JVM記憶體
- JVM的基本結構和JVM的記憶體結構JVM記憶體
- 淺談JVM記憶體結構 和 Java記憶體模型 和 Java物件模型JVM記憶體Java模型物件
- 【記憶體管理】Oracle AMM自動記憶體管理詳解記憶體Oracle
- C 語言結構體記憶體佈局問題結構體記憶體
- C語言結構體記憶體佈局問題C語言結構體記憶體
- struct結構體大小的計算(記憶體對齊)Struct結構體記憶體
- 2024.04.18每日收穫之聯合體結構體記憶體分配結構體記憶體