oracle 隔離級別

2021-09-01 03:28:36 字數 642 閱讀 3287

以oracle 為例

標準的資料庫隔離級別分為

未提交讀, 提交讀, 重複讀, 序列化

[img]

其中 髒讀(dirty read):當乙個事務讀取另乙個事務尚未提交的修改時,產生髒讀。

非重複讀(nonrepeatable read):同一查詢在同一事務中多次進行,由於其他提交事務所做的修改或刪除,每次返回不同的結果集,此時發生非重複讀。

幻像(phantom read):同一查詢在同一事務中多次進行,由於其他提交事務所做的插入操作,每次返回不同的結果集,此時發生幻像讀。

由於 髒讀沒有實際的業務意義(bleum使用sql server的髒讀來做單元測試) 加上 非重複讀 和 幻讀很類似。

所以oracle只支援 提交讀(預設) 和 序列化的級別 再加上 自定義的 read-only

read-only:

遵從事務級的讀一致性,僅僅能看見在本事務開始前由其它事務提交的更改。

不允許在本事務中進行dml操作。

read only是serializable的子集。它們都避免了非重複讀和幻像。區別是在read only中是唯讀;而在serializable中可以進行dml操作。

[b]簡而言之: oracle 預設是提交讀, 沒有髒讀問題,但有非重複讀和幻讀問題。[/b]

ORACLE事物隔離級別

oracle最低的隔離級別是read committed,它有如下特性 可能有些人會奇怪,oracle最低的隔離級別怎麼不是read uncommitted呢?因為oracle有undo,它天生就是讀寫不阻塞,因此在oracle裡,根本就不會出現髒讀。這裡解釋一下什麼是 語句級的讀一致性 它是指 當...

ORACLE事物隔離級別

oracle最低的隔離級別是read committed,它有如下特性 可能有些人會奇怪,oracle最低的隔離級別怎麼不是read uncommitted呢?因為oracle有undo,它天生就是讀寫不阻塞,因此在oracle裡,根本就不會出現髒讀。這裡解釋一下什麼是 語句級的讀一致性 它是指 當...

Oracle 事務隔離級別

先看一張concepts中關於事務隔離級別的一張 從上圖可以看到 通常事務的隔離級別定義為以下4種 基於3種在併發事務中需要避免的現象來劃分的 1.read uncommitted 從字面意義可以看出,讀取那些未提交的資料。事務1在事務進行過程中,會讀到事務2修改了但是沒有提交的資料,所以產生了 髒...