Oracle事务的隔离
事務是指一些列操作的集合,它有4個屬性:原子性(Automacity)、一致性(Consistency)、隔離性(Isolation)和持久性(Durability),這4個屬性簡稱為ACID。原子性指事務是一個整體的工作單元,要么全部執行,要么全部取消;一致性指事務操作完成時,必須使所有數據保持一致狀態,事務執行成功則所有數據更新為一個新的狀態,失敗則保持原來執行前的狀態;隔離性指事務在并發情況下,事務之間不會相互影響,一個事務的修改不會讓另一個事務查看到它數據的中間狀態;持久性是說事務提交后,對數據的修改就永久保存到數據庫中了。
我們先看下事務不做隔離會產生的問題:
1、幻讀:對插入而言的。事務1查詢某張表,事務2往表里插入數據,事務1重新查詢,把事務2插入的數據查出來了。
2、不可重復讀:對修改或刪除而言的。同上,事務1查詢某張表的某條記錄,事務2修改或刪除該記錄,事務1重新查詢,發現數據變了或沒了。
3、臟讀:對未提交回滾操作而言的。事務1修改了某張表的某條記錄,事務2查詢后事務1回滾了,事務2讀取了不存在的數據。
ANSI/ISO SQL92?標準中定義了四個隔離級別,在各隔離級別中,允許發生上述三種需要阻止的現象中的一種或多種:
1、讀取未提交數據(read uncommitted)
2、讀取已提交數據(read committed)
3、可重現的讀取(repeatable read)
4、序列化(serializable)
通過指定不同的隔離級別,可避免上述一種或多種并發問題,見下圖。
Oracle的隔離別只支持上面的2和4,1和3是不支持的。因為不支持1,所以想要臟讀都沒可能;而不支持3,要想避免不可重復讀,可以直接使用4。另外Oracle還有一種叫只讀的隔離級別,就是說該事務只支持讀取,而不能增刪改。
轉載于:https://www.cnblogs.com/wuxun1997/p/6417917.html
總結
以上是生活随笔為你收集整理的Oracle事务的隔离的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UVA - 11584 Partitio
- 下一篇: 设计模式——门面(外观)模式