RAC cache fusion機(jī)制實(shí)現(xiàn)原理分析
更新時(shí)間:2012年12月03日 12:08:05 作者:
本文將詳細(xì)介紹RAC cache fusion機(jī)制實(shí)現(xiàn)原理,需要了解更多的朋友可以參考下
在單實(shí)例中,進(jìn)程要想修改數(shù)據(jù)塊,必須在數(shù)據(jù)塊的當(dāng)前版本(Currentcopy)上進(jìn)行修改RAC環(huán)境也一樣
這便涉及到一系列問題:
如何獲得數(shù)據(jù)塊的版本在集群節(jié)點(diǎn)間的分布圖?
如何知道哪個(gè)節(jié)點(diǎn)擁有的是當(dāng)前版本?
如何完成傳遞過程?
這一系列問題的解決依靠?jī)?nèi)存融合技術(shù)(cachefusion)
cachefusion通過高速的privateinterconnect,在實(shí)例間進(jìn)行數(shù)據(jù)塊傳遞
這是RAC最核心的工作機(jī)制,他把所有實(shí)例的SGA虛擬成一個(gè)大的SGA區(qū)
每當(dāng)不同的實(shí)例請(qǐng)求相同的數(shù)據(jù)塊,這個(gè)數(shù)據(jù)塊就需要在實(shí)例間進(jìn)行傳遞
在Oracle7的OPS中,這種傳遞是通過磁盤完成的,也叫“Disk-BasedPing”
也就是第1個(gè)實(shí)例必須先把這個(gè)數(shù)據(jù)塊寫回磁盤,然后第2個(gè)實(shí)例再從磁盤上讀取這個(gè)數(shù)據(jù)塊
這種依靠磁盤來完成數(shù)據(jù)傳遞極大影響系統(tǒng)性能
在Oracle8i引入“Net-BasedPing”通過PrivateInterconnect來傳遞數(shù)據(jù)塊
但是8i只能傳遞沒有修改過的數(shù)據(jù)塊,對(duì)于“臟塊”還是要通過磁盤來傳遞,這一點(diǎn)和OPS一樣
在Oracle9i的cachefusion,所有的數(shù)據(jù)塊,無論修改的或者沒有修改的,都可以通過PrivateInterconnect傳遞
系統(tǒng)系能得到極大的改善
在cachefusion中,每個(gè)數(shù)據(jù)塊都會(huì)被映射成一個(gè)cachefusion資源,或者說是一個(gè)PCM資源
PCM資源實(shí)際上是一個(gè)數(shù)據(jù)結(jié)構(gòu),資源的名稱就是DBA(數(shù)據(jù)塊地址)
每個(gè)進(jìn)程對(duì)數(shù)據(jù)的請(qǐng)求都是分步完成:
①把DBA轉(zhuǎn)換成PCM資源名稱
②把這個(gè)PCM資源請(qǐng)求提交給DLM(分布式鎖管理器)
③DLM進(jìn)行GlobalLock的申請(qǐng)、釋放活動(dòng),只有進(jìn)程獲得了PCMLock,才能繼續(xù)下一步
也就是實(shí)例首先要獲得數(shù)據(jù)塊的使用權(quán)
整個(gè)cachefusion有兩個(gè)服務(wù)組成:GCS和GES
⑴GCS服務(wù)負(fù)責(zé)數(shù)據(jù)塊在實(shí)例間的傳遞
由后臺(tái)進(jìn)程LMSn完成
⑵GES服務(wù)負(fù)責(zé)鎖管理
在多個(gè)實(shí)例之間協(xié)調(diào)對(duì)數(shù)據(jù)塊的訪問順序,保證數(shù)據(jù)的一致性訪問
由后臺(tái)進(jìn)程LMD完成
這便涉及到一系列問題:
如何獲得數(shù)據(jù)塊的版本在集群節(jié)點(diǎn)間的分布圖?
如何知道哪個(gè)節(jié)點(diǎn)擁有的是當(dāng)前版本?
如何完成傳遞過程?
這一系列問題的解決依靠?jī)?nèi)存融合技術(shù)(cachefusion)

cachefusion通過高速的privateinterconnect,在實(shí)例間進(jìn)行數(shù)據(jù)塊傳遞
這是RAC最核心的工作機(jī)制,他把所有實(shí)例的SGA虛擬成一個(gè)大的SGA區(qū)
每當(dāng)不同的實(shí)例請(qǐng)求相同的數(shù)據(jù)塊,這個(gè)數(shù)據(jù)塊就需要在實(shí)例間進(jìn)行傳遞
在Oracle7的OPS中,這種傳遞是通過磁盤完成的,也叫“Disk-BasedPing”
也就是第1個(gè)實(shí)例必須先把這個(gè)數(shù)據(jù)塊寫回磁盤,然后第2個(gè)實(shí)例再從磁盤上讀取這個(gè)數(shù)據(jù)塊
這種依靠磁盤來完成數(shù)據(jù)傳遞極大影響系統(tǒng)性能
在Oracle8i引入“Net-BasedPing”通過PrivateInterconnect來傳遞數(shù)據(jù)塊
但是8i只能傳遞沒有修改過的數(shù)據(jù)塊,對(duì)于“臟塊”還是要通過磁盤來傳遞,這一點(diǎn)和OPS一樣
在Oracle9i的cachefusion,所有的數(shù)據(jù)塊,無論修改的或者沒有修改的,都可以通過PrivateInterconnect傳遞
系統(tǒng)系能得到極大的改善
在cachefusion中,每個(gè)數(shù)據(jù)塊都會(huì)被映射成一個(gè)cachefusion資源,或者說是一個(gè)PCM資源
PCM資源實(shí)際上是一個(gè)數(shù)據(jù)結(jié)構(gòu),資源的名稱就是DBA(數(shù)據(jù)塊地址)
每個(gè)進(jìn)程對(duì)數(shù)據(jù)的請(qǐng)求都是分步完成:
①把DBA轉(zhuǎn)換成PCM資源名稱
②把這個(gè)PCM資源請(qǐng)求提交給DLM(分布式鎖管理器)
③DLM進(jìn)行GlobalLock的申請(qǐng)、釋放活動(dòng),只有進(jìn)程獲得了PCMLock,才能繼續(xù)下一步
也就是實(shí)例首先要獲得數(shù)據(jù)塊的使用權(quán)
整個(gè)cachefusion有兩個(gè)服務(wù)組成:GCS和GES
⑴GCS服務(wù)負(fù)責(zé)數(shù)據(jù)塊在實(shí)例間的傳遞
由后臺(tái)進(jìn)程LMSn完成
⑵GES服務(wù)負(fù)責(zé)鎖管理
在多個(gè)實(shí)例之間協(xié)調(diào)對(duì)數(shù)據(jù)塊的訪問順序,保證數(shù)據(jù)的一致性訪問
由后臺(tái)進(jìn)程LMD完成
相關(guān)文章
Oracle基礎(chǔ)學(xué)習(xí)之簡(jiǎn)單查詢和限定查詢
相信對(duì)于每個(gè)剛接觸數(shù)據(jù)庫的朋友們來說,查詢是首先要學(xué)會(huì)的,本文主要給大家介紹了Oracle中的簡(jiǎn)單查詢和限定查詢,文中通過示例代碼與文字說明給大家介紹的很詳細(xì),相信對(duì)大家的的理解和學(xué)習(xí)會(huì)很有幫助,下面感興趣的朋友們一起來學(xué)習(xí)學(xué)習(xí)吧。2016-11-11Windows系統(tǒng)下Oracle數(shù)據(jù)庫每天自動(dòng)備份
linux和unix下面使用shell可以很方便實(shí)現(xiàn),如果windows環(huán)境下可以結(jié)合計(jì)劃任務(wù)實(shí)現(xiàn)自動(dòng)備份,下面通過本文給大家介紹實(shí)現(xiàn)方法,需要的朋友參考下吧2016-12-12Oracle數(shù)據(jù)庫中表空間的基本管理操作小結(jié)
這篇文章主要介紹了Oracle數(shù)據(jù)庫中表空間的基本管理方法小結(jié),包括創(chuàng)建表空間和獲取表空間大小等的操作命令,需要的朋友可以參考下2015-12-12oracle分區(qū)表創(chuàng)建(自動(dòng)按年、月、日分區(qū))實(shí)戰(zhàn)記錄
Oracle的表分區(qū)功能通過改善可管理性、性能和可用性,從而為各式應(yīng)用程序帶來了極大的好處,下面這篇文章主要給大家介紹了關(guān)于oracle分區(qū)表創(chuàng)建(自動(dòng)按年、月、日分區(qū))的相關(guān)資料,需要的朋友可以參考下2023-06-06oracle導(dǎo)出sql語句的結(jié)果集和保存執(zhí)行的sql語句(深入分析)
本篇文章是對(duì)oracle導(dǎo)出sql語句的結(jié)果集與保存執(zhí)行的sql語句進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05