spring事務傳播和事務隔離

2021-10-19 15:04:02 字數 3176 閱讀 2092

是最常用的,支援當前事務,若當前沒事務,就新建乙個事務。

經測試,左側的事務註解必須得新增,右側的可加可不加  這倆insert事務合併成乙個事務了

支援當前事務,若當前沒事務,就以非事務方式執行。

上圖:a調b,a有事務,b事務用supports,ab合併為乙個事務了。ab都會回滾

上圖:a調b,a無事務,b事務用supports,則ab都沒有事務,ab都不回滾

支援當前事務,若當前沒事務,就丟擲異常。

上圖:a調b,a有事務,b事務用mandatory,ab合併為乙個事務了。ab都會回滾

上圖:a調b,a沒事務,b事務用mandatory,進入b方法就會報錯,a不回滾,b不執行

新建事務,若當前有事務,就把當前事務掛起。

上圖:a調b,a有事務,b事務用requires_new,a事務掛起,b會新建乙個事務。ab都會回滾

上圖:a調b,a沒事務,b事務用requires_new,b新建乙個事務了。a不回滾,b會回滾

以非事務方式執行,若當前有事務,就把當前事務掛起。

以非事務方式執行,如果當前存在事務,則丟擲異常。

上圖:a調b,a有事務,b事務用never,b走不到方法裡,進入b方法就會報錯,a回滾,b不執行

上圖:a調b,a沒事務,b事務用never,ab都不回滾

若當前有事務,則在巢狀事務中執行,如果當前沒有事務,則按required屬性執行

怎麼解決幻讀的現象,可以使用序列化來解決。

可能:√ 不可能: ×

隔離級別髒讀不可重複讀幻讀

未提交讀(read uncommitted)

已提交讀(read committed)

可重複讀(repeatable read)

可序列化(serializable)

髒讀讀取未提交資料

a事務讀取b事務尚未提交的資料,此時如果b事務發生錯誤並執行回滾操作,那麼a事務讀取到的資料就是髒資料。

時間順序

轉賬事務

取款事務

1開始事務

2開始事務

3查詢賬戶餘額為2000元

4取款1000元,餘額被更改為1000元

5查詢賬戶餘額為1000元(產生髒讀)

6取款操作發生未知錯誤,事務回滾,餘額變更為2000元

7轉入2000元,餘額被更改為3000元(髒讀的1000+2000)

8提交事務

備註按照正確邏輯,此時賬戶餘額應該為4000元

不可重複讀前後多次讀取,資料內容不一致

事務a在執行讀取操作,多次讀取同一條資料時結果資料不一樣 。

例如:事務a第一次讀取資料,讀取了小明的年齡為20歲,事務b執行更改操作,將小明的年齡更改為30歲,然後事務a再次讀取小明的年齡時,發現其年齡是30歲,和之前的資料不一樣了,也就是資料不重複了。

時間順序

事務a事務b

1開始事務

2第一次查詢,小明的年齡為20歲

3開始事務

4其他操作

5更改小明的年齡為30歲

6提交事務

7第二次查詢,小明的年齡為30歲

備註按照正確邏輯,事務a前後兩次讀取到的資料應該一致

幻讀:前後多次讀取,資料總量不一致

​ 事務a在執行讀取操作,需要兩次統計資料的總量,前一次查詢資料總量後,此時事務b執行了新增資料的操作並提交後,這個時候事務a讀取的資料總量和之前統計的不一樣,就像產生了幻覺一樣,平白無故的多了幾條資料,稱為幻讀。

時間順序

事務a事務b

1開始事務

2第一次查詢,資料總量為100條

3開始事務

4其他操作

5新增100條資料

6提交事務

7第二次查詢,資料總量為200條

備註按照正確邏輯,事務a前後兩次讀取到的資料總量應該一致

事務和事務隔離級別,Spring事務傳播和隔離級別

一 事務有四大特性,也即原子性 atomicity 一致性 consistency 隔離性 isolation 永續性 durability 1 原子性 即不可分割,事務要麼全部被執行,要麼全部不執行。如果事務的所有子事務全部提交成功,則所有的資料庫操作被提交,資料庫狀態發生變化 如果有子事務失敗,...

spring 事務隔離 與事務傳播 區別

spring的事務隔離級別 isolation default 使用資料庫預設的隔離級別。isolation read uncommitted 允許讀取改變了的還未提交的資料,可能導致髒讀 不可重複讀和幻讀。isolation read committed 允許併發事務提交之後讀取,可以避免髒讀,可...

Spring事務傳播機制和隔離級別

事務的傳播機制是指新增事務時的策略。傳播機制共有以下幾種 propagation mandatory 當前事務必須在乙個已有事務環境中執行,否則丟擲異常 propagation required propagation requires new propagation nested 這三種傳播機制不...