事務隔離級別:一個事務對數據庫的修改與并行的另一個事務的隔離程度。
兩個并發事務同時訪問數據庫表相同的行時,可能存在以下三個問題:
1、幻想讀:事務T1讀取一條指定where條件的語句,返回結果集。此時事務T2插入一行新記錄,恰好滿足T1的where條件。然后T1使用相同的條件再次查詢,結果集中可以看到T2插入的記錄,這條新紀錄就是幻想。
2、不可重復讀取:事務T1讀取一行記錄,緊接著事務T2修改了T1剛剛讀取的記錄,然后T1再次查詢,發現與第一次讀取的記錄不同,這稱為不可重復讀。
3、臟讀:事務T1更新了一行記錄,還未提交所做的修改,這個T2讀取了更新后的數據,然后T1執行回滾操作,取消剛才的修改,所以T2所讀取的行就無效,也就是臟數據。
為了處理這些問題,SQL標準定義了以下幾種事務隔離級別

Oracle數據庫支持READ COMMITTED 和 SERIALIZABLE這兩種事務隔離級別。Oracle不支持臟讀。

SQL標準所定義的默認事務隔離級別是SERIALIZABLE,但是Oracle 默認使用的是READ COMMITTED 設置隔離級別使用
SET TRANSACTION ISOLATION LEVEL
[READ UNCOMMITTED|READ COMMITTED|REPEATABLE READ|SERIALIZABLE]
posted on 2011-08-15 12:03
xrzp 閱讀(324)
評論(0) 編輯 收藏 所屬分類:
oracle-基礎