【趙強老師】Oracle數據庫的內存結構

首先,咱們經過一張圖片來了解一下Oracle數據庫的內存結構,以下:數據庫


每一個數據庫實例有兩個關聯的內存結構—系統全局區(SGA),程序全局區(PGA)緩存

  • 系統全局(SGA):一組共享的內存結構(稱爲SGA 組件),其中包含一個OracleDB 實例的數據和控制信息。SGA 由全部服務器進程和後臺進程共享。SGA 中存儲的數據有高速緩存的數據塊和共享SQL 區域等SGA的大小由參數sga_target決定。

 

  • 程序全局區(PGA):包含某個服務器進程或後臺進程的數據及控制信息的內存區域。PGA Oracle DB 在服務器進程或後臺進程啓動時建立的非共享內存。服務器進程對PGA 的訪問是獨佔式的。每一個服務器進程和後臺進程都具備本身的PGAPGA的大小由參數pga_aggregate_target決定。


SGA幾個關鍵組件作以說明:服務器

  • 共享池:shared pool用於緩存可在用戶間共享的各類構造,好比給定SQL 語句的語法分析樹和執行計劃。


  • 數據庫緩衝區高速緩存:buffer cache從數據庫中檢索到的數據塊是緩存在此,數據塊今後內存組件對數據塊進行操做,下降了硬盤IO負擔,若是用戶進程所需的數據在該區域能很找到,咱們稱之爲高速緩存區命中,高的命中率反映出來的效果就是操做反應快,這點很好理解,數據庫優化中頗有必要考慮這點

   在buffer cache中,存在如下的緩衝區:性能

          (*)KEEP 緩衝區池:一種專用數據庫緩衝區高速緩存,用於長時間在內存中保留數據塊。一些頻繁使用的數據塊可相對長期的保留在此,不至於每次都從硬盤獲取,從而優化了數據庫的性能;優化

          (*)RECYCLE 緩衝區池:一種專用數據庫緩衝區高速緩存,用於從內存中快速回收或刪除數據塊。相對於KEEP的對立面,很好理解;spa

          (*) nK 緩衝區高速緩存:多種專用數據庫緩衝區高速緩存中的一種,用於存放大小不一樣於默認數據庫塊大小的數據塊。注意默認數據塊爲8K 日誌

  • 重作日誌緩衝區:log buffer用於存放有關對數據庫所作更改的信息,重作信息在寫入磁盤中重作日誌文件(redo文件)前,將緩存在此處。


  • 大型池,用於爲某些大型進程(例如Oracle 備份和恢復操做)和I/O 服務器進程提供大型內存分配。

  • Java池和流池

相關文章
相關標籤/搜索