oracle最低的隔離級別是read committed,它有如下特性:
可能有些人會奇怪,oracle最低的隔離級別怎麼不是read uncommitted呢?因為oracle有undo,它天生就是讀寫不阻塞,因此在oracle裡,根本就不會出現髒讀。
這裡解釋一下什麼是「語句級的讀一致性」,它是指
當一條語句開始執行時,它既能看到本事務之前對資料的影響,也能看到語句開始執行時已提交事務對資料的影響。看下面這個例子:
1) 清空測試表資料:
sql> delete from test;
1 row deleted.
sql> commit;
commit complete.
2) 設定session1的隔離級別為read committed:
session1> alter session set isolation_level=read committed;
session altered.
3) 在session1中插入一條資料(未提交):
session1> insert into test values(1);
1 row created.
4) 在session1查詢:
sql> select * from test;
id----------
1在session1中可以看到本事務之前插入的資料。
5) 在session2中插入一條資料並提交:
session2> insert into test values(2);
1 row created.
session2> commit;
commit complete.
6) 在session1中查詢:
session1> select * from test;
id----------21
在session1中可以看到session2中已提交的資料。
在該隔離級別中,只要其它事務提交(即時其它事務在本事務之後才開始),也能看到其它事務對資料操作的結果,因此它不能阻止非重複讀和幻讀。
oracle的下乙個級別不是repeatable read,而是serializable,它又如下特性:
所謂「事務級的一致性」是指通過這種隔離級別,查詢的結果已經在事務啟動的時候確定,事務啟動後其它事務對資料的改變,對本事務的查詢沒有影響。看下面例子:
1) 清空測試表資料:
sql> delete from test;
2 rows deleted.
sql> commit;
commit complete.
2) 設定session1的隔離級別為serializable:
session1> alter session set isolation_level=serializable;
session altered.
3) 在session1中插入資料(未提交):
session1> insert into test values(1);
1 row created.
4) 在session1中查詢:
session1> select * from test;
id----------
1在session1中可以看到本事務之前插入的資料。
5) 在session2中插入一條資料並提交:
session2> insert into test values(2);
1 row created.
sql> commit;
commit complete.
6) 在session1中查詢:
session1> select * from test;
id----------
1在session1中無法看到session2中插入的資料。
read only和serializable類似,唯一不同的是它不允許在本事務中進行dml操作,見下面例子:
1) 清空測試表資料:
sql> delete from test;
1 row deleted.
sql> commit;
commit complete.
2) 設定session1的隔離級別為read only:
session1> set transaction read only;
transaction set.
3) 嘗試在session1中插入資料:
session1> insert into test values(1);
insert into test values(1)
*error at line 1:
ora-01456: may not perform. insert/delete/update operation inside a read only
transaction
插入資料出錯。
這種級別很少用到。
ORACLE事物隔離級別
oracle最低的隔離級別是read committed,它有如下特性 可能有些人會奇怪,oracle最低的隔離級別怎麼不是read uncommitted呢?因為oracle有undo,它天生就是讀寫不阻塞,因此在oracle裡,根本就不會出現髒讀。這裡解釋一下什麼是 語句級的讀一致性 它是指 當...
事物隔離級別
自然也是支援四種事務隔離級別的 read uncommitted,read commit,repeatable read serializable,下面就分別最四種隔離級別在實現的鎖機制做乙個簡介 serializable 1 這種隔離級別對資料的要求最為嚴格,自然也是效能最差的一種隔離級別。在所有...
事物隔離級別
隔離級別從松到緊 讀未提交,讀提交 重複讀,序列化。讀未提交 可能會出現髒讀的情況 例子 你去買5個包子。人多。店員拿的急多方乙個,袋子裡有6個,這個時候,你眼睛一瞟。心裡美滋滋。付錢的時候老闆檢查了一下,發現多了乙個,就拿走了乙個,然後你付錢走人 提交事務 這時候你就發現實際上袋子裡只有5個,但是...