標籤:
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基礎結構架構方面,涉及執行個體記憶體結構、進程結構、實體儲存體結構、邏輯儲存體系等基礎理論。
ORACLE記憶體結構簡介