您好,登錄后才能下訂單哦!
原文地址:Managing Read Consistency
oracle版本:11g r1
Oracle分布式數(shù)據(jù)庫中的一個重要限制就是讀取一致性。問題產生的原因是因為每個系統(tǒng)都有自己的SCN,SCN可以當作數(shù)據(jù)庫的內部時間戳。Oracle數(shù)據(jù)庫服務通過SCN來明確查詢數(shù)據(jù)的版本號。
分布式事務中的SCN在三種情況進行同步:1、每個SQL語句執(zhí)行結束時;2、每個事務的開始時;3、每個食物結束時。節(jié)點間如果有大量通信尤其是分布式更新操作,這個同步的動作會非常頻繁。盡管有這樣那樣的問題,在分布式系統(tǒng)中實際上沒有任何方式能保證SCN的絕對同步:總會存在這樣的情況,一個節(jié)點持有的SCN是另外一個節(jié)點之前的SCN。
因為SCN獲取機制,你可以查詢一個略微舊的快照數(shù)據(jù),因此無法立刻看到遠程數(shù)據(jù)庫的最新變化。根據(jù)讀取一致性,查詢可以得到一致并且舊的數(shù)據(jù)。注意,查詢所得到的數(shù)據(jù)是基于舊的SCN,因此如果本地執(zhí)行更新事務并更新遠程節(jié)點的兩個表后,下次訪問這兩張表時會得到更新前的數(shù)據(jù)。
SCN獲取機制的一個結果就是2個連續(xù)的 select 語句能夠得到不同的數(shù)據(jù),甚至在2個語句之間沒有DML執(zhí)行。例如,你執(zhí)行更新語句然后向遠程數(shù)據(jù)庫提交該更新。當你用 select 語句查詢視圖(基于該遠程表),視圖不回顯示更新的列。下一次執(zhí)行 select 語句時,這個更新出現(xiàn)。
你可以使用下列條件來確定在查詢前兩個機器的SCN是同步的:
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。