trace 檔案中 consistent mode與current mode 的解釋

tolywang發表於2013-01-10

consistent mode與current mode :

consistent mode   是在基於query mode 下的,當查詢開始的時候oracle將確立一個時間點,
凡是在這個時間點以前提交的資料oracle將能看見,之後提交的資料將不能看見。但查詢的時
候可能遇上這樣的情況,該塊中資料已經被修改了,沒有提交,或者提交的時間點比查詢開始
的時間晚,則oracle為了保證 讀的一致性,需要去回滾段獲取 該塊中變化前的資料(before
image)。這叫 consistent reads 。

current mode    當看到當前的block中的內容的時候,是什麼就是什麼,跟時間點無關,不用
去回滾段獲取之前的資料。什麼時候會是這樣的模式? 除了9i以前版本的FTS對資料字典的獲取
是current mode外(這是因為關於資料字典的獲取必須是當前看見的狀態),主要就是發生在DML
的時候,當發生DML的時候,session所看見的必須是當前的block的狀態,不能去回滾段獲取資料
(否則就亂套了)。假如當前block中資料是被session更改過還沒有提交,那麼看當前狀態資料則
被其他session 鎖定,出現等待 (這才是正常的)。(查詢去回滾段獲取資料,讀和更新之間不會
出現鎖的情況)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-760088/,如需轉載,請註明出處,否則將追究法律責任。

相關文章