程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> Oracle如何保持一致讀?

Oracle如何保持一致讀?

編輯:Oracle教程

一致讀的原理,就是查詢的記錄由查詢的這一時間點決定,後面即便變化了,也要根據回滾保持的前鏡像記錄,取到那個點的數據。ORACLE是如何保證的呢?首先我們要了解兩個情況:

1, SCN:System Change Number。這是一個只會增加不會減少的遞增的數字,存在於ORACLE的最小單位塊裡,但某塊改變時SCN就會遞增。

2,數據庫的回滾段記錄槽,事物槽是用來分配回滾段空間的。如果你更新了某塊,事務就被寫進事務槽裡。如果沒有提交或者回滾,該塊就存在活動事務,數據庫讀到次塊可以識別到這種情況的存在。

因此Oracle在做一致讀的時候,首先是看發起的SCN是否大於當前查詢塊的SCN,如果小於,毫無疑問從回滾段獲取前鏡像數據。如果SCN確實大於當前查詢塊的SCN,還要確保該塊沒有活動事務,否則還是要去前鏡像查找。

所以ORACLE的回滾段既可以回滾數據,又可以保證一致性讀。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved