在oracle中,讀取操作不會阻礙更新操作,更新操作也不會阻礙讀取操作,這樣在oracle中的各種隔離級別下,讀取操作都不會等待更新事務結束,更新操作也不會因為另乙個事務中的讀取操作而發生等待,這也是oracle事務處理的乙個優勢所在。
oracle支援read committed和serializable級別,預設的隔離級別是read committed,在oracle中隔離級別實現如下:
read committed隔離級別(也稱為語句級別的隔離)
如果乙個事務正在對某個表進行dml操作,而這時另外乙個會話對這個表的記錄進行讀取操作,則oracle會去讀取回滾段或撤銷段中存放的更新之前的記錄,而不會象sql server一樣等待更新事務的結束。
serializable隔離級別(也稱為事務級別的隔離)
事務中的讀取操作只能讀取這個事務開始之前已經提交的資料結果。如果在讀取時,其他事務正在對記錄進行修改,則oracle就會在回滾段或撤銷段中去尋找對應的原來未經更改的記錄(而且是在讀取操作所在的事務開始之前存放於回滾段或撤銷段的記錄),這時讀取操作也不會因為相應記錄被更新而等待。
oracle中的事務隔離級別
印象中oracle是支援4種標準的隔離級別的,但是今天在測試中,發現oracle只支援讀提交和序列化2個隔離級別,汗!sql alter session set isolation level read uncommitted alter session set isolation level re...
Oracle 事務隔離級別
先看一張concepts中關於事務隔離級別的一張 從上圖可以看到 通常事務的隔離級別定義為以下4種 基於3種在併發事務中需要避免的現象來劃分的 1.read uncommitted 從字面意義可以看出,讀取那些未提交的資料。事務1在事務進行過程中,會讀到事務2修改了但是沒有提交的資料,所以產生了 髒...
Oracle事務隔離級別
髒讀 dirty read 當乙個事務讀取另乙個事務尚未提交的修改時,產生髒讀。不可重複讀 nonrepeatable read 同一查詢在同一事務中多次進行,在此期間,由於其他事務提交了對資料的修改或刪除,每次返回不同的結果。幻讀 phantom read 同一查詢在同一事務中多次進行,由於其他提...