Oracle 內(nèi)存結(jié)構(gòu)(Memory Structure) |
發(fā)布時(shí)間: 2012/8/26 15:29:13 |
Oracle的內(nèi)存結(jié)構(gòu)包括兩個(gè)部分:System Global Area(SGA)和Program Global Area(PGA)。 PGA:當(dāng)一個(gè)Server Process啟動的時(shí)候分配。Server Process上面已經(jīng)講到。 Memory -> SGA SGA是動態(tài)的,可以通過SGA_MAX_SIZE參數(shù)來設(shè)置大小。SGA的增大和縮小有一個(gè)基本的單位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。當(dāng)然還包括一些其他的buffer和cache,如Data Buffer Cache.在Oracle11g還多了Stream Pool。 Large Pool和Java Pool是SGA中可選的內(nèi)存結(jié)構(gòu)。前者在備份和IO處理以及并行操作時(shí)會用到,后者在使用Java的時(shí)候會用到。 Memory -> SGA -> Shared Poll Shared Pool主要用來存儲最近執(zhí)行的絕大多數(shù)的SQL語句和最近使用的數(shù)據(jù)定義(data definitions)。我們可以通過SHARED_POOL_SIZE來設(shè)置其大小。語句為:ALERT SYSTEM SET SHARED_POOL_SIZE = 64M;Shared Pool包括兩個(gè)主要的影響性能的內(nèi)存結(jié)構(gòu):Library Cache和Data Dictionary Cache。 Libray Cache用來存儲絕大多數(shù)的最近使用的SQL和PL/SQL語句,并提供最近使用語句的共享。它主要包括Shared SQL area和Shared PL/SQL area。它的大小是由Shared Pool決定的,它由最少最近使用機(jī)制管理(Least recently used,LRU algorithm)。 Data Dictionary Cache是一個(gè)存儲大多數(shù)最近使用數(shù)據(jù)庫中的定義的集合,包括數(shù)據(jù)庫文件,表,列,用戶,權(quán)限等的信息。它為server process提供對象名稱解析和訪問驗(yàn)證(validate access)。它的大小也由Shared Pool決定。 Shared Pool還存儲一些數(shù)據(jù)塊(data blocks)和重做日志緩沖。 Memory -> PGA 每一個(gè)連接到Oracle數(shù)據(jù)庫的用戶都會有一個(gè)自己的PGA。它隨用戶進(jìn)程的創(chuàng)建而創(chuàng)建,隨用戶進(jìn)程的終結(jié)而終結(jié)。
本文出自:億恩科技【1tcdy.com】 服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |