數(shù)據(jù)庫(kù)緩存融合分析-創(chuàng)新互聯(lián)

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

從策劃到設(shè)計(jì)制作,每一步都追求做到細(xì)膩,制作可持續(xù)發(fā)展的企業(yè)網(wǎng)站。為客戶提供成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、成都外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站策劃、網(wǎng)頁(yè)設(shè)計(jì)、申請(qǐng)域名、網(wǎng)站空間、網(wǎng)絡(luò)營(yíng)銷、VI設(shè)計(jì)、 網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,以客戶的口碑塑造優(yōu)易品牌,攜手廣大客戶,共同發(fā)展進(jìn)步。

概念

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

    緩存融合主要有如下四個(gè)功能:

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

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

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

  (4) 在每個(gè)實(shí)例的SGA的目錄結(jié)構(gòu)中保存資源信息。

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

緩存融合工作原理

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

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

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

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

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

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

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

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

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

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

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

    ②這時(shí)GCS會(huì)告訴上一次修改成功的節(jié)點(diǎn)C,放棄它加上的X標(biāo)記,因?yàn)閯e的節(jié)點(diǎn)也要修改這個(gè)數(shù)據(jù)塊。

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

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

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

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

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

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

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

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

當(dāng)前標(biāo)題:數(shù)據(jù)庫(kù)緩存融合分析-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://bm7419.com/article4/ihpoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、標(biāo)簽優(yōu)化、軟件開發(fā)響應(yīng)式網(wǎng)站、網(wǎng)站設(shè)計(jì)虛擬主機(jī)

廣告

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

外貿(mào)網(wǎng)站制作