Oracle 內存結構(Memory Structure) |
發布時間: 2012/8/26 15:29:13 |
Oracle的內存結構包括兩個部分:System Global Area(SGA)和Program Global Area(PGA)。 PGA:當一個Server Process啟動的時候分配。Server Process上面已經講到。 Memory -> SGA SGA是動態的,可以通過SGA_MAX_SIZE參數來設置大小。SGA的增大和縮小有一個基本的單位granule。 在Sql plus我們可以查看SGA分配和granule。 SQL> show sga SQL> select component,granule_size from 2 v$sga_dynamic_components; SGA還有它的組成部件,這里主要介紹Shared Pool,Large Pool和Java Pool。當然還包括一些其他的buffer和cache,如Data Buffer Cache.在Oracle11g還多了Stream Pool。 Large Pool和Java Pool是SGA中可選的內存結構。前者在備份和IO處理以及并行操作時會用到,后者在使用Java的時候會用到。 Memory -> SGA -> Shared Poll Shared Pool主要用來存儲最近執行的絕大多數的SQL語句和最近使用的數據定義(data definitions)。我們可以通過SHARED_POOL_SIZE來設置其大小。語句為:ALERT SYSTEM SET SHARED_POOL_SIZE = 64M;Shared Pool包括兩個主要的影響性能的內存結構:Library Cache和Data Dictionary Cache。 Libray Cache用來存儲絕大多數的最近使用的SQL和PL/SQL語句,并提供最近使用語句的共享。它主要包括Shared SQL area和Shared PL/SQL area。它的大小是由Shared Pool決定的,它由最少最近使用機制管理(Least recently used,LRU algorithm)。 Data Dictionary Cache是一個存儲大多數最近使用數據庫中的定義的集合,包括數據庫文件,表,列,用戶,權限等的信息。它為server process提供對象名稱解析和訪問驗證(validate access)。它的大小也由Shared Pool決定。 Shared Pool還存儲一些數據塊(data blocks)和重做日志緩沖。 Memory -> PGA 每一個連接到Oracle數據庫的用戶都會有一個自己的PGA。它隨用戶進程的創建而創建,隨用戶進程的終結而終結。
本文出自:億恩科技【www.laynepeng.cn】 |