consistent mode和current mode的區別

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

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

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

相關文章