oracle的一致讀和當前讀
一致讀(Consistent read): “發現”要修改的行時,所完成的獲取就是一致讀。
當前讀(Current read): 得到塊來實際更新所要修改的行時,所完成的獲取就是當前讀。
dml語句實際上都包含一個where字句,在做dml時,首先會根據where字句的條件做一致讀,即去查詢符合where條件的行,在進行一致讀的時候,如果發現被查詢行處於鎖定狀態時,oracle會去讀取undo段,進而構造出一個事務開始時對應的一致塊,最終得出要修改的行。
然後oracle再做當前讀,即檢視要修改行的當前值,並比較當前值是否和一致讀取的值相等,如果不相等的話,oracle就會重啟動更新。
在重啟動更新時,oracle會先使用select for update來鎖定這行記錄,然後再進行dml操作,這樣可以防止再次重啟動。
select for update可以防止重啟動的關鍵原因在於: select for update只會進行當前讀,而沒有一致讀。這樣就不存在由於當前讀和一致讀中間的時間差導致的兩次讀取值不一樣問題。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31444259/viewspace-2135601/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORACLE 物理讀 邏輯讀 一致性讀 當前模式讀總結淺析Oracle模式
- zt-當前模式讀與一致性讀模式
- Oracle Clob的一致讀Oracle
- MySQL學習之MVCC原理和當前讀MySqlMVC
- 實驗演示Oracle“多版本一致讀”和“Cross DDL”OracleROS
- Oracle物理讀和邏輯讀Oracle
- Oracle一致性讀(consistents gets)Oracle
- Oracle一致性讀(Consistent Read)的原理Oracle
- 有關oracle邏輯讀和物理讀Oracle
- Oracle查詢當前使用者和當前使用者下的所有表Oracle
- 【基礎篇一致性讀】一致性讀分析
- mysql snapshot read快照讀及current read當前讀與鎖lock之一MySql
- Oracle資料庫中一致讀行為的改變Oracle資料庫
- 【基礎篇一致性讀】一致性讀分析(三)
- 【基礎篇一致性讀】一致性讀分析(續)
- MySQL事務(4種事務隔離級別、髒寫、髒讀、不可重複讀、幻讀、當前讀、快照讀、MVCC、事務指標監控)MySqlMVC指標
- 【一致性讀的計算】
- mysql一致性讀MySql
- 構造一致性CR塊讀,ORACLE需要做的工作:Oracle
- oracle中同一事務內的一致性讀Oracle
- zt_oracle一致性讀consistent readOracle
- oracle 物理讀 邏輯讀的理解Oracle
- oracle 物理讀,邏輯讀的理解Oracle
- php 獲取當前域名和當前協議PHP協議
- 在Oracle中,什麼是物理讀和邏輯讀?Oracle
- Clion中C++使用當前目錄讀取檔案失敗C++
- 檢視oracle當前sessionOracleSession
- 參考oracle官方文件關於髒讀、一致性讀、undo中已提交資料塊的理解Oracle
- 使用10046跟蹤Oracle前映象資料讀Oracle
- 轉:Oracle資料庫一致性讀的原理(Consistent Read)Oracle資料庫
- 【MySQL】淺談一致性讀MySql
- 由讀一致性分析undo
- Oracle ErrorStack 使用和閱讀詳解OracleError
- oracle當前執行事務鎖Oracle
- Oracle如何查詢當前LockOracle
- 不久前讀的番茄工作法
- 8. transaction id,row trx_id,undo log,檢視陣列,當前讀陣列
- C語言ftell()函式:獲取檔案讀寫指標的當前位置C語言函式指標