溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Oracle 讀取一致性

發(fā)布時間:2020-06-16 08:26:44 來源:網絡 閱讀:702 作者:53422245 欄目:關系型數(shù)據(jù)庫

原文地址: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是同步的:
 

  • 因為SCN是在遠程查詢后完成同步,會在每個遠程查詢之前都有一個虛擬的遠程查詢,例如, select * from dual@remote 。
  • 因為SCN會在每個遠程事務的開始、提交、回滾當前事務時進行同步,在遠程查詢之前。
向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI