1. 程式人生 > 其它 >Spring:Spring事務的4種特性、5種隔離級別、7種傳播特性

Spring:Spring事務的4種特性、5種隔離級別、7種傳播特性

此文章只作筆記記錄,不作為講解文章

1. 事務的特性(4種)

原子性 (atomicity):強調事務的不可分割.
一致性 (consistency): 事務的執行的前後資料的完整性保持一致.
隔離性 (isolation): 事務執行的過程中, 不受其他事務的干擾, 即併發執行的事物之間互不干擾
永續性(durability): 事務一旦結束, 資料就持久到資料庫

2. 事務誘發的問題

2.1 髒讀

事務A讀到了事務B的已操作但未提交的資料.

2.2 不可重複讀

事務A有多次查詢,第一次讀取資料後繼續執行,第二次讀到了事務B已經提交的 update 的資料導致 事務A 內的多次查詢結果不一致.

2.3 幻讀

事務A有多次查詢,第一次讀取資料後繼續執行,第二次讀到了事務B已經提交的 insert ( delete )的資料導致 事務A 內的多次查詢結果不一致.

2.4 事務丟失( 回滾丟失 )

事務A執行增刪改操作後( 還未提交 ),事務B也執行增刪改操作並提交,事務A繼續執行後報錯進行事務回滾時,此時就會把事務B的操作清除掉。

2.5 事務丟失( 提交丟失 )

事務A與事務B同時對一組資料執行增刪改操作,事務B先一步提交事務,事務A繼續執行後也提交事務,此時就會把事務B的操作清除掉。

3. 資料庫的事務隔離級別(4種)

部分資料庫的預設事務隔離級別為 已提交讀 ;例:SQL Server、Oracle

Mysql的預設事務隔離級別為:可重複讀

4. 事務的隔離級別(5種)

4.1 ISOLATION_DEFAULT

  使用資料庫預設的隔離級別

4.2 ISOLATION_READ_UNCOMMITTED

  事務最低的隔離級別 ( 可能會導致 髒讀,不可重複讀,幻讀 )

4.3 ISOLATION_READ_COMMITTED

  保證一個事務修改的資料提交後才能被另外一個事務讀取 ( 可能會導致 不可重複讀,幻讀 )

4.4 ISOLATION_REPEATABLE_READ

  保證一個事務修改的資料提交後才能被另外一個事務讀取 ( 可能會導致 幻讀 )

  保證一個事務讀取資料後,另外一個事務才能修改( 可能會導致 幻讀 )

4.5 ISOLATION_SERIALIZABLE

  這是花費最高代價但是最可靠的事務隔離級別。事務被處理為順序執行( 執行效率最慢 )

5. 事務的傳播特性(7種)

( 事務巢狀呼叫問題 ) 當事務方法A內部呼叫事務方法B時,子事務方法B出現事務報錯,其父事務方法A是否回滾事務、事務報錯、正常執行?

注:如下所有配置特性都是作用在子事務方法B的。

第一類:父事務方法有事務時,支援父事務方法

5.3 Propagation.SUPPORTS

父方法A沒有標註事務時,子事務方法B按照非事務的方法執行(報錯不回滾);父事務方法A標註事務時,子事務方法B繫結父事務方法A的事務一起執行、回滾、提交、報錯。

5.6 Propagation.REQUIRED

父方法A沒有標註事務時,子事務方法B新建事務自執行;父事務方法A標註事務時,子事務方法B與父事務方法A的事務合併執行無論哪個事務出錯都一起回滾、或者一起提交。

5.7 Propagation.MANDATORY

父方法A沒有標註事務時,子事務方法B報錯丟擲異常;父事務方法A標註事務時,子事務方法B繫結父事務方法A的事務一起執行、回滾、提交、報錯。

第二類:父事務方法有事務時,隔離父事務方法另闢新事務執行或者直接報錯

5.1 Propagation.NEVER

父方法A沒有標註事務時,子事務方法B正常執行;父事務方法A標註事務時,子事務方法B直接報錯。

5.2 Propagation.NOT_SUPPORTED

父方法A沒有標註事務時,子事務方法B按照非事務的方法執行(報錯不回滾);父事務方法A標註事務時,子事務方法B把父事務方法A掛起,然後子事務方法B按照非事務的方法執行(報錯不回滾),之後子事務方法A繼續執行自己的事務。

5.4 Propagation.REQUIRES_NEW

父方法A沒有標註事務時,子事務方法B新建事務自執行;父事務方法A標註事務時,子事務方法B把父事務方法A掛起,然後子事務方法B新建事務自執行。( 子事務與父事務隔離執行,互不干涉 )

5.5 Propagation.NESTED

父方法A沒有標註事務時,子事務方法B新建事務自執行;父事務方法A標註事務時,子事務方法B回滾時不影響父事務方法A流程,但父事務方法A回滾時會一併回滾子事務方法B的所有操作。

----------------------------------- 作者:怒吼的蘿蔔 連結:http://www.cnblogs.com/nhdlb/ -----------------------------------