2014-03-26 57 views
0

這兩筆交易的水平有什麼區別:READ WRITEISOLATION LEVEL SERIALIZABLE? 據我所知,READ WRITE允許髒讀,而ISOLATION LEVEL SERIALIZABLE可以防止其他用戶更改數據(認爲我在這裏弄錯了),或者只是讀取交易開始時可用的數據(不會看到數據,在我的交易過程中已被其他用戶更改)。TRANSACTION的水平之間的差異:讀寫和隔離水平SERIALIZABLE

+1

Oracle確實不允許髒讀 –

+1

您的意思是'READ COMMITTED'而不是'READ WRITE'嗎? Oracle支持兩種事務隔離級別:READ COMMITTED和SERIALIZABLE。另外,根據是隻讀還是不讀取,您可以將事務標記爲「READ ONLY」或「READ WRITE」。 –

+0

sSo READ COMMITTED和SERIALIZABLE有什麼區別? – user3444106

回答

1

您可以找到有關該主題on the oracle site的詳細信息。

基本上READ COMMITTED允許「不可重複讀」和「幻讀」,而在SERIALIZABLE中都禁止。

如果允許不可重複讀取,同一個事務中的同一個SELECT查詢可能會根據查詢發出時返回不同的結果。其他並行交易可能會更改數據,並且此更改可能會在您的交易中可見。

如果幻像讀取被允許,可能會發生這樣的情況:當您在一個事務中發出兩次相同的SELECT查詢並且另一個事務並行地將行插入到表中時,這些行可能會在事務內部可見,但僅限於在第二個選擇的結果集中。因此,相同的select語句將在第一次返回例如5行,並在第二次執行時返回10行。

這兩個屬性都是類似的,但第一個只說了一些可能會改變的數據,而第二個屬性說了一些關於可能返回的附加行的內容。