原文地址:Managing Read Consistency
oracle版本:11g r1
Oracle分布式數(shù)據(jù)庫中的一個重要限制就是讀取一致性。問題產(chǎn)生的原因是因?yàn)槊總€系統(tǒng)都有自己的SCN,SCN可以當(dāng)作數(shù)據(jù)庫的內(nèi)部時(shí)間戳。Oracle數(shù)據(jù)庫服務(wù)通過SCN來明確查詢數(shù)據(jù)的版本號。
分布式事務(wù)中的SCN在三種情況進(jìn)行同步:1、每個SQL語句執(zhí)行結(jié)束時(shí);2、每個事務(wù)的開始時(shí);3、每個食物結(jié)束時(shí)。節(jié)點(diǎn)間如果有大量通信尤其是分布式更新操作,這個同步的動作會非常頻繁。盡管有這樣那樣的問題,在分布式系統(tǒng)中實(shí)際上沒有任何方式能保證SCN的絕對同步:總會存在這樣的情況,一個節(jié)點(diǎn)持有的SCN是另外一個節(jié)點(diǎn)之前的SCN。
因?yàn)镾CN獲取機(jī)制,你可以查詢一個略微舊的快照數(shù)據(jù),因此無法立刻看到遠(yuǎn)程數(shù)據(jù)庫的最新變化。根據(jù)讀取一致性,查詢可以得到一致并且舊的數(shù)據(jù)。注意,查詢所得到的數(shù)據(jù)是基于舊的SCN,因此如果本地執(zhí)行更新事務(wù)并更新遠(yuǎn)程節(jié)點(diǎn)的兩個表后,下次訪問這兩張表時(shí)會得到更新前的數(shù)據(jù)。
SCN獲取機(jī)制的一個結(jié)果就是2個連續(xù)的 select 語句能夠得到不同的數(shù)據(jù),甚至在2個語句之間沒有DML執(zhí)行。例如,你執(zhí)行更新語句然后向遠(yuǎn)程數(shù)據(jù)庫提交該更新。當(dāng)你用 select 語句查詢視圖(基于該遠(yuǎn)程表),視圖不回顯示更新的列。下一次執(zhí)行 select 語句時(shí),這個更新出現(xiàn)。
你可以使用下列條件來確定在查詢前兩個機(jī)器的SCN是同步的:
公司主營業(yè)務(wù):網(wǎng)站制作、網(wǎng)站建設(shè)、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出梅江免費(fèi)做網(wǎng)站回饋大家。