本篇內容主要講解“數據庫緩存融合分析”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“數據庫緩存融合分析”吧!
概念
簡單地說,緩存融合就是把Oracle RAC數據庫中所有數據庫緩存作為一個共享的數據庫緩存,并被RAC中的所有節(jié)點共享。它是實現RAC的基本技術。
緩存融合主要有如下四個功能:
(1) 提供擴展性的傳輸。
(2) 在實例間傳輸數據庫的映射。
(3) 跟蹤資源的當前位置和狀態(tài)。
(4) 在每個實例的SGA的目錄結構中保存資源信息。
圖中描述了兩節(jié)點RAC數據庫的運行情況。每個節(jié)點都運行一個數據庫實例,每個實例包含一組Oracle進程和用于緩存的系統(tǒng)全局區(qū)(SGA)。除了這些集群中的每個節(jié)點都還運行著一組特殊的進程:全局緩存服務進程(Global Cache Service ,GCS)和全局隊列服務進程(Global Enqueue Service,GES),GES主要負責維護字典緩存和庫緩存內的一致性,GCS主要負責協調不同實例間對數據塊的訪問,它們通過Global Resource Directory(GRD)來維護和記錄每個數據塊的狀態(tài),使其在群集中的各個節(jié)點之間同步和串行處理對數據的訪問。同時,每個數據區(qū)塊又隸屬于某一個節(jié)點,對于這個數據區(qū)塊來說,這個節(jié)點稱為主節(jié)點(Master)。為了在服務器之間均衡工作負載,群集中所有服務器都可以成為部分數據塊的主節(jié)點,GCS 是oracle 用來實施緩存融合的機制。
緩存融合工作原理
我們知道,Oracle RAC是采用共享磁盤方式實現數據庫的群集。群集環(huán)境中所有節(jié)點共享且并發(fā)地對磁盤上的數據庫進行更新,另外還要額外地需要同其它節(jié)點進行同步和串行機制,以避免兩個或多個節(jié)點同時更新同一數據頁上的記錄,那么Oracle RAC是如何利用緩存融合處理數據同步的?下面通過幾種情況模擬分析下緩存的同步原理。
(1) 節(jié)點A讀取一個全新的數據塊,該數據塊沒有被任何節(jié)點讀入
①節(jié)點A的請求發(fā)給GCS,GCS把這個請求轉發(fā)給這個數據塊的主節(jié)點,這里假定是節(jié)點B。因為這個數據塊沒有在任何節(jié)點的內存中,GCS標記這個數據塊狀態(tài)為S(shared,共享狀態(tài)),并記錄到GRD中。
②接著B告訴節(jié)點A狀態(tài)修改了,準備工作都完成了。然后節(jié)點A記錄共享狀態(tài)在自己的實例中,并讀入該數據塊。這時,節(jié)點A持有了該數據塊,并在GRD中進行記錄,標記持有該數據塊。此時,整個過程發(fā)生了一次IO操作。
(2) 節(jié)點C要修改剛才節(jié)點A讀入的數據塊,這里假定節(jié)點A剛才讀入的數據塊SCN是100。
①節(jié)點C找到該數據塊的主節(jié)點,也就是節(jié)點B,要求能加一個X標記(exclusive,獨占狀態(tài)),表明要修改數據。但是這個數據塊可能已經存在于多個節(jié)點的實例中,每個實例都有個S標記。
②GCS會告訴所有持有該數據塊的實例,把狀態(tài)S標記轉換為N標記(null,空狀態(tài))。
③最后一個從S標記轉換為N標記的實例把數據塊發(fā)送到需要對其進行修改的節(jié)點如節(jié)點C上。
④這時節(jié)點C的實例就可以對該數據塊加上X標記,并通知該數據塊的主節(jié)點,也就是節(jié)點B的GCS,GCS將最新的標記與位置記錄到GRD,并關閉以前節(jié)點的資源記錄。這時節(jié)點C就可以修改該數據塊了,假定把SCN從100修改成了101,這個時候磁盤上的數據塊SCN還是100,整個過程是通過內部互聯進行數據交換,沒有磁盤IO產生。
(3) 節(jié)點D也要修改該數據塊
①與節(jié)點C修改該數據塊類似,節(jié)點D也會找到該數據塊的主節(jié)點,也就是節(jié)點B,要求加一個X(exclusive,獨占狀態(tài))的鎖,表示要修改該數據塊。
②這時GCS會告訴上一次修改成功的節(jié)點C,放棄它加上的X標記,因為別的節(jié)點也要修改這個數據塊。
③節(jié)點C會確保這個數據塊的改變,已經記入聯機日志中,然后轉換X標記為N標記,并把這個數據塊拷貝到節(jié)點D。
④節(jié)點D加上X標記,并通知該數據塊的主節(jié)點,也就是節(jié)點B的GCS,GCS將最新的標記與位置揭露到GRD,并關閉以前節(jié)點上的資源記錄。這時節(jié)點D就可以修改該數據塊了,假定把該數據塊的SCN從101又修改成102,但是磁盤的數據塊上的SCN還是100??梢园l(fā)現RAC在這個過程中,也沒有任何磁盤操作,同樣是通過內部互聯來完成的。
(4) 節(jié)點A要重新讀取該數據塊
①節(jié)點A還是一樣,首先找到該數據塊的主節(jié)點,也就是節(jié)點B,希望能讀取最新的數據塊,也就是SCN為102的內容。
②GCS根據GRD得知最新的數據塊在節(jié)點D上,于是GCS通知節(jié)點D。節(jié)點D需要確保剛才修改過的數據塊已經記錄在聯機日志中,如果已經確定記錄過,則把原來的X標記轉換為S標記。
③節(jié)點D拷貝數據塊到節(jié)點A的實例,這時節(jié)點A獲得該數據塊,并獲得S標記。
④最后再告訴該數據塊的主節(jié)點,也就是節(jié)點B,GCS記錄最新的標記與位置到GRD,這個時候,節(jié)點A與節(jié)點D同時持有S標記的相同的數據塊,數據塊的SCN為102,但是磁盤中的數據塊SCN還是100,最后如果發(fā)生寫操作,只要最新的一個節(jié)點發(fā)生寫操作即可,所以該數據塊雖然在不同節(jié)點、不同實例中發(fā)生了多次改變,最終卻只有一次寫IO操作。
到此,相信大家對“數據庫緩存融合分析”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!
當前標題:數據庫緩存融合分析-創(chuàng)新互聯
文章網址:http://aaarwkj.com/article4/ihpoe.html
成都網站建設公司_創(chuàng)新互聯,為您提供移動網站建設、標簽優(yōu)化、軟件開發(fā)、響應式網站、網站設計、虛擬主機
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯