數據庫事務隔離級別

數據在操作過程中,可能出現3個不確定的情況:

1.Dirty Reads(髒讀)

一個事務讀取了另外一個事務未提交的數據

 

2.Non-repeatable Reads(不可重複讀)

一個事務再次讀取之前曾經讀取過的數據時,發現改數據已經被另外一個已提交的事務修改

 

3.Phantom Reads(幻讀)

一個事務重新執行一個查詢,返回一套符合查詢條件的記錄,但是這些記錄中包含了因爲其他最近提交的事務而產生的新紀錄

 

因此在標準的SQL規範中定義了4種事務隔離級別:

1.Read Uncommited

最低等級的事務隔離,它僅僅保證讀取過程中不會讀取到新的非法數據,這種隔離等級,上述的3中可能性均會發生

這種事務等級對於大多數邏輯嚴格的應用系統而言是難以接受的,髒讀取的出現將爲系統的併發邏輯帶來極大的隱患。

 

2.Read commited

此級別的事務隔離保證了一個事務不會讀取到另外一個事務尚未提交的數據,避免了“髒讀”

 

這種事務隔離級別是大多數主流的數據庫的默認的事務等級,同時也適用於大多數系統。

 

3.Repeatable Read

此級別的事務隔離避免了髒讀和不可重讀取的現象。這也意味着,一個事務不可能更新已經由另一個事務讀取但未提交的數據。

 

一般而言,此級別事務應用不廣泛,它並不能完全保證數據的合法性(幻讀的情況可能發生),同時帶來系統更多的性能損耗。

 

4.Serializable

最高級別的事務隔離,提供了最嚴格的隔離機制。事務按照隊列順序執行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章