本篇內(nèi)容主要講解“數(shù)據(jù)庫緩存融合分析”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“數(shù)據(jù)庫緩存融合分析”吧!
創(chuàng)新互聯(lián)自成立以來,一直致力于為企業(yè)提供從網(wǎng)站策劃、網(wǎng)站設(shè)計(jì)、網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站建設(shè)、電子商務(wù)、網(wǎng)站推廣、網(wǎng)站優(yōu)化到為企業(yè)提供個(gè)性化軟件開發(fā)等基于互聯(lián)網(wǎng)的全面整合營銷服務(wù)。公司擁有豐富的網(wǎng)站建設(shè)和互聯(lián)網(wǎng)應(yīng)用系統(tǒng)開發(fā)管理經(jīng)驗(yàn)、成熟的應(yīng)用系統(tǒng)解決方案、優(yōu)秀的網(wǎng)站開發(fā)工程師團(tuán)隊(duì)及專業(yè)的網(wǎng)站設(shè)計(jì)師團(tuán)隊(duì)。
概念
簡(jiǎn)單地說,緩存融合就是把Oracle RAC數(shù)據(jù)庫中所有數(shù)據(jù)庫緩存作為一個(gè)共享的數(shù)據(jù)庫緩存,并被RAC中的所有節(jié)點(diǎn)共享。它是實(shí)現(xiàn)RAC的基本技術(shù)。
緩存融合主要有如下四個(gè)功能:
(1) 提供擴(kuò)展性的傳輸。
(2) 在實(shí)例間傳輸數(shù)據(jù)庫的映射。
(3) 跟蹤資源的當(dāng)前位置和狀態(tài)。
(4) 在每個(gè)實(shí)例的SGA的目錄結(jié)構(gòu)中保存資源信息。
圖中描述了兩節(jié)點(diǎn)RAC數(shù)據(jù)庫的運(yùn)行情況。每個(gè)節(jié)點(diǎn)都運(yùn)行一個(gè)數(shù)據(jù)庫實(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ù)字典緩存和庫緩存內(nèi)的一致性,GCS主要負(fù)責(zé)協(xié)調(diào)不同實(shí)例間對(duì)數(shù)據(jù)塊的訪問,它們通過Global Resource Directory(GRD)來維護(hù)和記錄每個(gè)數(shù)據(jù)塊的狀態(tài),使其在群集中的各個(gè)節(jié)點(diǎn)之間同步和串行處理對(duì)數(shù)據(jù)的訪問。同時(shí),每個(gè)數(shù)據(jù)區(qū)塊又隸屬于某一個(gè)節(jié)點(diǎn),對(duì)于這個(gè)數(shù)據(jù)區(qū)塊來說,這個(gè)節(jié)點(diǎn)稱為主節(jié)點(diǎn)(Master)。為了在服務(wù)器之間均衡工作負(fù)載,群集中所有服務(wù)器都可以成為部分?jǐn)?shù)據(jù)塊的主節(jié)點(diǎn),GCS 是oracle 用來實(shí)施緩存融合的機(jī)制。
緩存融合工作原理
我們知道,Oracle RAC是采用共享磁盤方式實(shí)現(xiàn)數(shù)據(jù)庫的群集。群集環(huán)境中所有節(jié)點(diǎn)共享且并發(fā)地對(duì)磁盤上的數(shù)據(jù)庫進(jìn)行更新,另外還要額外地需要同其它節(jié)點(diǎn)進(jìn)行同步和串行機(jī)制,以避免兩個(gè)或多個(gè)節(jié)點(diǎn)同時(shí)更新同一數(shù)據(jù)頁上的記錄,那么Oracle RAC是如何利用緩存融合處理數(shù)據(jù)同步的?下面通過幾種情況模擬分析下緩存的同步原理。
(1) 節(jié)點(diǎn)A讀取一個(gè)全新的數(shù)據(jù)塊,該數(shù)據(jù)塊沒有被任何節(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ù)塊沒有在任何節(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è)過程發(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è)過程是通過內(nèi)部互聯(lián)進(jìn)行數(shù)據(jù)交換,沒有磁盤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。可以發(fā)現(xiàn)RAC在這個(gè)過程中,也沒有任何磁盤操作,同樣是通過內(nèi)部互聯(lián)來完成的。
(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需要確保剛才修改過的數(shù)據(jù)塊已經(jīng)記錄在聯(lián)機(jī)日志中,如果已經(jīng)確定記錄過,則把原來的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ù)庫緩存融合分析”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
本文標(biāo)題:數(shù)據(jù)庫緩存融合分析
網(wǎng)頁網(wǎng)址:http://aaarwkj.com/article18/gdiddp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、做網(wǎng)站、關(guān)鍵詞優(yōu)化、網(wǎng)站改版、全網(wǎng)營銷推廣、虛擬主機(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í)需注明來源: 創(chuàng)新互聯(lián)