Oracle體繫結構之-記憶體結構

來源:互聯網
上載者:User
一、系統全域區(SGA)

系統全域區的資料被多個使用者共用。當資料庫執行個體啟動時,系統全域區記憶體被自動分配。SGA按作用的不同,又分為:資料緩衝區、日誌緩衝區、共用池。

1. 資料緩衝區

資料緩衝區用於儲存從磁碟資料檔案中讀入的資料,供所有使用者共用。修改、插入的資料存放區在資料緩衝區中,修改完成或DBWR進程執行時,資料被寫入資料檔案。對於緩衝區中已經被修改但尚未寫入檔案的資料,我們稱之為“髒資料”。Oracle採用LRU(最近最少用)演算法來管理資料緩衝區中的資料。

在9i之前,資料緩衝區的大小是由DB_BLOCK_BUFFER確定,之後的版本中,是由參數DB_CACHE_SIZE及DB_nK_CACHE_SIZE確定。

緩衝區的設定對效能影響是很突出的。設一個查詢要讀取的資料區塊數為A,能夠從緩衝區讀取到的資料區塊數為C,需要從磁碟讀取的資料區塊數為D,那麼A+C+D稱為物理讀,則C/A稱為資料緩衝區的命中率。

補充:資料緩衝區命中率計算公式
======================================================================
SQL> select  1 - ((physical.value - direct.value - lobs.value) / logical.value)  "Buffer Cache Hit Ratio" 
             from v$sysstat physical,v$sysstat direct,v$sysstat lobs,v$sysstat logical
          where physical.name = 'physical reads'
              and direct.name='physical reads direct'
              and lobs.name='physical reads direct (lob)'
              and logical.name='session logical reads';
======================================================================

一般要求命中率在90%以上,如果命中率太低,就應適當調整資料緩衝區的大小。

2. 日誌緩衝區

日誌緩衝區用於緩衝交易記錄,在適當的時候再由LGWR進程寫入記錄檔。日誌緩衝區的大小由參數LOG_BUGGER設定。

補充:日誌緩衝區失敗率計算公式
======================================================================

SQL> select name,gets,misses,immediate_gets,immediate_misses,
                       Decode(gets,0,0,misses/gets*100) ratio1,
                       Decode(immediate_gets+immediate_misses,0,0,
                                      immediate_misses/(immediate_gets+immediate_misses)*100) ratio2
              from v$latch
           where name in('redo allocation','redo copy');
======================================================================

其中,GETS、MISSES分別表示成功、失敗等待日誌緩衝區的次數.IMMEDIATE_GETS表示成功立即得到日誌緩衝區的次數.IMMEDIATE_MISSES表示未成功立即得到日誌緩衝區的次數.

等待表示日誌在進入日誌緩衝區時因為日誌緩衝區過小而沒有空閑空間,所以日誌緩衝區的失敗率表示了日誌緩衝區是否足夠大.不夠大時,使用者的日誌寫將產生等待過程.對於日誌緩衝區的失敗率,應該小於1%.

3. 共用池

共用池是對sql,pl/sql程式進行文法分析,編譯,執行的記憶體地區。包括:庫緩衝區(library cache),資料字典緩衝區(data dictinary cache),使用者全域區(user global area)三個部分。

共用池的大小由參數shared_pool_size設定。

如果共用池設定過小,則運行SQL,PL/SQL 程式所佔用的時間會較長,影響資料庫效能.對於共用池而言,要求某一個實體,如預存程序等,儘可能駐留內在地區,增大程式啟動並執行效率,減少重新分析與編譯的時間.

補充:資料字典成功/失敗次數統計
======================================================================
SQL> select sum(gets) 'dictionary gets',
                       sum(getmisses)  'dictionary cache getmisses'
              from v$rowcache;
======================================================================

其中,GETS表示讀取某一類資料字典時的成功次數.GETMISSES表示讀取某一類資料字典時的失敗次數.

補充:資料字典失敗/命中率計算公式
======================================================================
SQL> select parameter,gets,Getmisses,
                       getmisses/(gets+getmisses)*100 'miss ratio',
                       (1-(sum(getmisses)/(sum(gets)+sum(getmisses)))*100 "Hit ratio"
              from v$rowcache
           where gets+getmisses<>0
            group by parameter,gets,getmisses;
======================================================================

補充:庫緩衝區命中率計算公式:

======================================================================
SQL>select sum(pins) "total pins",
                      sum(reloads) "total reloads",
                      sum(reloads)/sum(pins)*100 libcahe
            from v$librarycache;
======================================================================

緩衝的失敗率應該在1%以下

二、程式全域區

程式全域區(PGA)是包含單個使用者或伺服器資料的控制資訊的記憶體地區。是在使用者進程串連到oracle資料庫並建立一個會話時,由oracle自動分配的。

PGA是非共用區,主要用於在編程時儲存變數與數組。會話結束時,PGA釋放。

三、排序區

排序區用於sql的order by。oracle優先使用排序區進行排序,如果記憶體不夠,oracle自動使用暫存資料表空間進行排序。

註:本文參考了CSDN網友方友松的技術Blog,作者的Blog地址為:http://blog.csdn.net/truexf/

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.