數(shù)據(jù)庫緩存融合分析

本篇內(nèi)容主要講解“數(shù)據(jù)庫緩存融合分析”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“數(shù)據(jù)庫緩存融合分析”吧!

創(chuàng)新互聯(lián)自成立以來,一直致力于為企業(yè)提供從網(wǎng)站策劃、網(wǎng)站設計、網(wǎng)站設計制作、成都網(wǎng)站建設、電子商務、網(wǎng)站推廣、網(wǎng)站優(yōu)化到為企業(yè)提供個性化軟件開發(fā)等基于互聯(lián)網(wǎng)的全面整合營銷服務。公司擁有豐富的網(wǎng)站建設和互聯(lián)網(wǎng)應用系統(tǒng)開發(fā)管理經(jīng)驗、成熟的應用系統(tǒng)解決方案、優(yōu)秀的網(wǎng)站開發(fā)工程師團隊及專業(yè)的網(wǎng)站設計師團隊。

概念

    簡單地說,緩存融合就是把Oracle RAC數(shù)據(jù)庫中所有數(shù)據(jù)庫緩存作為一個共享的數(shù)據(jù)庫緩存,并被RAC中的所有節(jié)點共享。它是實現(xiàn)RAC的基本技術。

    緩存融合主要有如下四個功能:

  (1) 提供擴展性的傳輸。

  (2) 在實例間傳輸數(shù)據(jù)庫的映射。

  (3) 跟蹤資源的當前位置和狀態(tài)。

  (4) 在每個實例的SGA的目錄結構中保存資源信息。

    圖中描述了兩節(jié)點RAC數(shù)據(jù)庫的運行情況。每個節(jié)點都運行一個數(shù)據(jù)庫實例,每個實例包含一組Oracle進程和用于緩存的系統(tǒng)全局區(qū)(SGA)。除了這些集群中的每個節(jié)點都還運行著一組特殊的進程:全局緩存服務進程(Global Cache Service ,GCS)和全局隊列服務進程(Global Enqueue Service,GES),GES主要負責維護字典緩存和庫緩存內(nèi)的一致性,GCS主要負責協(xié)調(diào)不同實例間對數(shù)據(jù)塊的訪問,它們通過Global Resource Directory(GRD)來維護和記錄每個數(shù)據(jù)塊的狀態(tài),使其在群集中的各個節(jié)點之間同步和串行處理對數(shù)據(jù)的訪問。同時,每個數(shù)據(jù)區(qū)塊又隸屬于某一個節(jié)點,對于這個數(shù)據(jù)區(qū)塊來說,這個節(jié)點稱為主節(jié)點(Master)。為了在服務器之間均衡工作負載,群集中所有服務器都可以成為部分數(shù)據(jù)塊的主節(jié)點,GCS 是oracle 用來實施緩存融合的機制。

緩存融合工作原理

    我們知道,Oracle RAC是采用共享磁盤方式實現(xiàn)數(shù)據(jù)庫的群集。群集環(huán)境中所有節(jié)點共享且并發(fā)地對磁盤上的數(shù)據(jù)庫進行更新,另外還要額外地需要同其它節(jié)點進行同步和串行機制,以避免兩個或多個節(jié)點同時更新同一數(shù)據(jù)頁上的記錄,那么Oracle RAC是如何利用緩存融合處理數(shù)據(jù)同步的?下面通過幾種情況模擬分析下緩存的同步原理。

   (1) 節(jié)點A讀取一個全新的數(shù)據(jù)塊,該數(shù)據(jù)塊沒有被任何節(jié)點讀入

     ①節(jié)點A的請求發(fā)給GCS,GCS把這個請求轉發(fā)給這個數(shù)據(jù)塊的主節(jié)點,這里假定是節(jié)點B。因為這個數(shù)據(jù)塊沒有在任何節(jié)點的內(nèi)存中,GCS標記這個數(shù)據(jù)塊狀態(tài)為S(shared,共享狀態(tài)),并記錄到GRD中。

     ②接著B告訴節(jié)點A狀態(tài)修改了,準備工作都完成了。然后節(jié)點A記錄共享狀態(tài)在自己的實例中,并讀入該數(shù)據(jù)塊。這時,節(jié)點A持有了該數(shù)據(jù)塊,并在GRD中進行記錄,標記持有該數(shù)據(jù)塊。此時,整個過程發(fā)生了一次IO操作。

  (2) 節(jié)點C要修改剛才節(jié)點A讀入的數(shù)據(jù)塊,這里假定節(jié)點A剛才讀入的數(shù)據(jù)塊SCN是100。

    ①節(jié)點C找到該數(shù)據(jù)塊的主節(jié)點,也就是節(jié)點B,要求能加一個X標記(exclusive,獨占狀態(tài)),表明要修改數(shù)據(jù)。但是這個數(shù)據(jù)塊可能已經(jīng)存在于多個節(jié)點的實例中,每個實例都有個S標記。

    ②GCS會告訴所有持有該數(shù)據(jù)塊的實例,把狀態(tài)S標記轉換為N標記(null,空狀態(tài))。

    ③最后一個從S標記轉換為N標記的實例把數(shù)據(jù)塊發(fā)送到需要對其進行修改的節(jié)點如節(jié)點C上。

    ④這時節(jié)點C的實例就可以對該數(shù)據(jù)塊加上X標記,并通知該數(shù)據(jù)塊的主節(jié)點,也就是節(jié)點B的GCS,GCS將最新的標記與位置記錄到GRD,并關閉以前節(jié)點的資源記錄。這時節(jié)點C就可以修改該數(shù)據(jù)塊了,假定把SCN從100修改成了101,這個時候磁盤上的數(shù)據(jù)塊SCN還是100,整個過程是通過內(nèi)部互聯(lián)進行數(shù)據(jù)交換,沒有磁盤IO產(chǎn)生。

   (3) 節(jié)點D也要修改該數(shù)據(jù)塊

    ①與節(jié)點C修改該數(shù)據(jù)塊類似,節(jié)點D也會找到該數(shù)據(jù)塊的主節(jié)點,也就是節(jié)點B,要求加一個X(exclusive,獨占狀態(tài))的鎖,表示要修改該數(shù)據(jù)塊。 

    ②這時GCS會告訴上一次修改成功的節(jié)點C,放棄它加上的X標記,因為別的節(jié)點也要修改這個數(shù)據(jù)塊。

    ③節(jié)點C會確保這個數(shù)據(jù)塊的改變,已經(jīng)記入聯(lián)機日志中,然后轉換X標記為N標記,并把這個數(shù)據(jù)塊拷貝到節(jié)點D。

    ④節(jié)點D加上X標記,并通知該數(shù)據(jù)塊的主節(jié)點,也就是節(jié)點B的GCS,GCS將最新的標記與位置揭露到GRD,并關閉以前節(jié)點上的資源記錄。這時節(jié)點D就可以修改該數(shù)據(jù)塊了,假定把該數(shù)據(jù)塊的SCN從101又修改成102,但是磁盤的數(shù)據(jù)塊上的SCN還是100??梢园l(fā)現(xiàn)RAC在這個過程中,也沒有任何磁盤操作,同樣是通過內(nèi)部互聯(lián)來完成的。

    (4) 節(jié)點A要重新讀取該數(shù)據(jù)塊

     ①節(jié)點A還是一樣,首先找到該數(shù)據(jù)塊的主節(jié)點,也就是節(jié)點B,希望能讀取最新的數(shù)據(jù)塊,也就是SCN為102的內(nèi)容。

     ②GCS根據(jù)GRD得知最新的數(shù)據(jù)塊在節(jié)點D上,于是GCS通知節(jié)點D。節(jié)點D需要確保剛才修改過的數(shù)據(jù)塊已經(jīng)記錄在聯(lián)機日志中,如果已經(jīng)確定記錄過,則把原來的X標記轉換為S標記。

     ③節(jié)點D拷貝數(shù)據(jù)塊到節(jié)點A的實例,這時節(jié)點A獲得該數(shù)據(jù)塊,并獲得S標記。

     ④最后再告訴該數(shù)據(jù)塊的主節(jié)點,也就是節(jié)點B,GCS記錄最新的標記與位置到GRD,這個時候,節(jié)點A與節(jié)點D同時持有S標記的相同的數(shù)據(jù)塊,數(shù)據(jù)塊的SCN為102,但是磁盤中的數(shù)據(jù)塊SCN還是100,最后如果發(fā)生寫操作,只要最新的一個節(jié)點發(fā)生寫操作即可,所以該數(shù)據(jù)塊雖然在不同節(jié)點、不同實例中發(fā)生了多次改變,最終卻只有一次寫IO操作。

到此,相信大家對“數(shù)據(jù)庫緩存融合分析”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關內(nèi)容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!

本文標題:數(shù)據(jù)庫緩存融合分析
網(wǎng)頁網(wǎng)址:http://muchs.cn/article18/gdiddp.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供自適應網(wǎng)站、做網(wǎng)站關鍵詞優(yōu)化、網(wǎng)站改版、全網(wǎng)營銷推廣虛擬主機

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站