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

2021-08-31 05:07:14 字數 1013 閱讀 6807

spring的事務隔離級別

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

isolation_read_uncommitted:允許讀取改變了的還未提交的資料,可能導致髒讀、不可重複讀和幻讀。

isolation_read committed:允許併發事務提交之後讀取,可以避免髒讀,可能導致重複讀和幻讀。

isolation_repeatable_read:對相同欄位的多次讀取結果一致,可導致幻讀。

isolation_serializable:完全服從acid的原則,確保不發生髒讀、不可重複讀和幻讀。

可以根據自己的系統對資料的要求採取適應的隔離級別,因為隔離牽涉到鎖定資料庫中的記錄,對資料正性要求越嚴格,併發的效能也越差。

spring的事務傳播行為

spring事務的傳播行為說的是當乙個方法呼叫另乙個方法時,事務該如何操作。

propagation_mandatory:該方法必須執行在乙個事務中。如果當前事務不存在則丟擲異常。

propagation_nested:如果當前存在乙個事務,則該方法執行在乙個巢狀的事務中。被巢狀的事務可以從當前事務中單獨的提交和回滾。如果當前不存在事務,則開始乙個新的事務。各廠商對這種傳播行為的支援參差不齊,使用時需注意。

propagation_never:當前方法不應該執行在乙個事務中。如果當前存在乙個事務,則丟擲異常。

propagation_not_supported:當前方法不應該執行在乙個事務中。如果乙個事務正在執行,它將在該方法的執行期間掛起。

propagation_required:該方法必須執行在乙個事務中。如果乙個事務正在執行,該方法將執行在這個事務中。否則,就開始乙個新的事務。

propagation_requires_new:該方法必須執行在自己的事務中。它將啟動乙個新的事務。如果乙個現有的事務正在執行,將在這個方法的執行期間掛起。

propagation_supports:當前方法不需要事務處理環境,但如果乙個事務已經在執行的話,這個方法也可以在這個事務裡執行。

spring事務傳播和事務隔離

是最常用的,支援當前事務,若當前沒事務,就新建乙個事務。經測試,左側的事務註解必須得新增,右側的可加可不加 這倆insert事務合併成乙個事務了 支援當前事務,若當前沒事務,就以非事務方式執行。上圖 a調b,a有事務,b事務用supports,ab合併為乙個事務了。ab都會回滾 上圖 a調b,a無事...

spring事務傳播行為與事務隔離等級

propagation屬性的傳播行為 required 指定當前方法必需在事務環境中執行,如果當前有事務環境就加入當前正在執行的事務環境,如果當前沒有事務,就新建乙個事務。這是預設值。supports 指定當前方法加入當前事務環境,如果當前沒有事務,就以非事務方式執行。mandatory 指定當前方...

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

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