ORACLE内存结构简介
ORACLE數據庫作為世界上一款功能強大的數據庫管理軟件,功能體系特別龐大。我們有必要對它的每一部分學習了解,然后才從全局的角度進行有效把握。我們會著重從理論基礎體系角度再逐步到實戰應用。實際上,如果沒有掌握基礎理論體系,而直接生搬硬套一些維護技術經驗,那也只是空中樓閣罷了。而如果你想直接通過一兩篇文章學到什么秘籍成為維護或是DB優化高手那也是不現實的。所以這些文適合靜下心來真正想了解學習ORALCE體系的讀者。方法論掌握好,起碼頭腦中的思路方向是正確的,至于術也就是水到渠成。
我們通常所說的ORACLE 11g 中g也就是grid,代表網格技術。
Oracle 網格計算技術包括:
? 自動存儲管理(ASM)
? RealApplication Cluster (RAC)
?Application Server Cluster
? Enterprise Manager Grid Control
ORACLE內存結構簡介
我們所說的廣義上的內存是指服務器硬件內存。當數據庫部署在服務器上后會分配給它一定的內存空間,內存的管理就交由數據庫本身來管理。很多數據庫性能問題反應在內存不足上。不足有可能是服務器預分配給oracle的內存本來就少了,或者是內存沒有利用好。本文就oracle內存管理機制做一下介紹,起到拋磚引玉。
上圖來源于oracle官方文檔,此圖很好的描述了oracle的內存組件結構。
每個數據庫實例有兩個關聯的內存結構—系統全局區(SGA),程序全局區(PGA)。
系統全局區(SGA):一組共享的內存結構(稱為SGA 組件),其中包含一個OracleDB 實例的數據和控制信息。SGA 由所有服務器進程和后臺進程共享。SGA 中存儲的數據有高速緩存的數據塊和共享SQL 區域等;
程序全局區(PGA):包含某個服務器進程或后臺進程的數據及控制信息的內存區域。PGA 是Oracle DB 在服務器進程或后臺進程啟動時創建的非共享內存。服務器進程對PGA 的訪問是獨占式的。每個服務器進程和后臺進程都具有自己的PGA。
就SGA幾個關鍵組件做以說明:
共享池:用于緩存可在用戶間共享的各種構造,比如給定SQL 語句的語法分析樹和執行計劃;
數據庫緩沖區高速緩存:從數據庫中檢索到的數據塊是緩存在此,數據塊從此內存組件對數據塊進行操作,降低了硬盤IO負擔,如果用戶進程所需的數據在該區域能很找到,我們稱之為高速緩存區命中,高的命中率反映出來的效果就是操作反應快,這點很好理解,數據庫優化中很有必要考慮這點;
KEEP 緩沖區池:一種專用數據庫緩沖區高速緩存,用于長時間在內存中保留數據塊。一些頻繁使用的數據塊可相對長期的保留在此,不至于每次都從硬盤獲取,從而優化了數據庫的性能;
RECYCLE 緩沖區池:一種專用數據庫緩沖區高速緩存,用于從內存中快速回收或刪除數據塊。相對于KEEP的對立面,很好理解;
nK 緩沖區高速緩存:多種專用數據庫緩沖區高速緩存中的一種,用于存放大小不同于默認數據庫塊大小的數據塊。注意默認數據塊為8K;
重做日志緩沖區:用于存放有關對數據庫所做更改的信息,重做信息在寫入磁盤中重做日志文件(即redo文件)前,將緩存在此處。重做日志寫入磁盤的頻率很高,什么時間什么條件下寫都是挺有意思的知識,重做日志文件方面我們計劃在后邊存儲體系章節再討論學習。
大型池:用于為某些大型進程(例如Oracle 備份和恢復操作)和I/O 服務器進程提供大型內存分配;
?
看到此你或許就有疑問,oracle是怎么讓這些內存結構和諧共處的。在創建DB的時候會生成初始化參數,當然這些參數是可以手動修改的。當然最簡單的辦法是讓oracle自己管理并優化內存結構,因為只有它最懂自己的身體內部。這些知識我們會在后期性能優化章節來介紹的。
今天的知識就到此,希望能給你帶來一些幫助。歡迎你留言交流,歡迎關注分享。
?
?
---------------END----------------
【取知有道】這里歡迎愛好學習的朋友,著重數據庫等IT知識的分享學習。
請敬關注【取知有道】訂閱號。微信搜索公眾號【取知有道】,添加關注!
或長按此二維碼添加關注!
?
近期即將分享(6月份):
Oracle基礎體系結構方面,涉及實例內存結構、進程結構、物理存儲結構、邏輯存儲體系等基礎理論。
?
轉載于:https://www.cnblogs.com/hytty/p/5584850.html
總結
以上是生活随笔為你收集整理的ORACLE内存结构简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jfinal配置rails的数据表
- 下一篇: RabbitMQ调试与测试工具-v1.0