Spring事物傳播行為和隔離級別

2021-08-31 15:12:01 字數 1142 閱讀 8282

[b]

spring的事務隔離級別

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

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

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

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

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

[/b]

dirty reads non-repeatable reads phantom reads

serializable 不會 不會 不會

repeatable read 不會 不會 會

read committed 不會 會 會

read uncommitted 會 會 會

spring的事務傳播行為

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

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

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

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

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

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

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

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

Spring事物特性 隔離級別和傳播行為

原子性 atomicity 強調事務的不可分割.一致性 consistency 事務的執行的前後資料的完整性保持一致.隔離性 isolation 乙個事務執行的過程中,不應該受到其他事務的干擾 永續性 durability 事務一旦結束,資料就持久到資料庫 髒讀 a事物讀取到b事物未提交的資料,b事...

spring事物傳播行為

propagation required 如果當前沒有事務,就新建乙個事務,如果已經存在乙個事務中,加入到這個事務中。這是最常見的選擇。propagation supports 支援當前事務,如果當前沒有事務,就以非事務方式執行。propagation mandatory 使用當前的事務,如果當前沒...

Spring 事物的隔離級別與傳播行為

注 1 事務的隔離級別和資料庫併發性是成反比的,隔離級別越高,併發性越低。2 對於不同的資料庫,支援的隔離級別也不一樣 oracle只能支援讀寫提交和序列化,而mysql能夠支援4種,對於oracle預設的隔離級別為讀寫提交,mysql則是可重複讀。3 註解 transactional的底層實現是s...