spring事物的隔離級別

若是想了解spring 的隔離級別,首先要明白幾個概念 spring

髒讀:一事務對數據進行了增刪改,但未提交,另外一事務能夠讀取到未提交的數據。若是第一個事務這時候回滾了,那麼第二個事務就讀到了髒數據。數據庫

不可重複讀:一個事務中發生了兩次讀操做,第一次讀操做和第二次操做之間,另一個事務對數據進行了修改,這時候兩次讀取的數據是不一致的。事務

幻讀:第一個事務對必定範圍的數據進行批量修改,第二個事務在這個範圍增長一條數據,這時候第一個事務就會丟失對新增數據的修改。it

其實我一直喜歡 從系統級別了解一下事物實現的原理,但願有識之士可以幫忙解答?io

數據庫自己的隔離級別table

隔離級別     隔離級別的值     致使的問題原理

Read-Uncommitted     0     致使髒讀數據

Read-Committed     1     避免髒讀,容許不可重複讀和幻讀tab

Repeatable-Read     2     避免髒讀,不可重複讀,容許幻讀co

Serializable     3     串行化讀,事務只能一

 

Spring中的隔離級別

常量     解釋

ISOLATION_DEFAULT     這是個 PlatfromTransactionManager 默認的隔離級別,使用數據庫默認的事務隔離級別。另外四個與 JDBC 的隔離級別相對應。

ISOLATION_READ_UNCOMMITTED     這是事務最低的隔離級別,它充許另一個事務能夠看到這個事務未提交的數據。這種隔離級別會產生髒讀,不可重複讀和幻像讀。

ISOLATION_READ_COMMITTED     保證一個事務修改的數據提交後才能被另一個事務讀取。另一個事務不能讀取該事務未提交的數據。

ISOLATION_REPEATABLE_READ     這種事務隔離級別能夠防止髒讀,不可重複讀。可是可能出現幻像讀。

ISOLATION_SERIALIZABLE     這是花費最高代價可是最可靠的事務隔離級別。事務被處理爲順序執行。

相關文章
相關標籤/搜索