spring事務傳播機制與資料庫事務隔離級別

2021-09-01 16:57:56 字數 1162 閱讀 3741

事務傳播行為型別

說明propagation_required [ˌprɔpəˈgeɪʃən]傳輸

[rɪˈkwaɪəd]必須

如果當前沒有事務,就新建乙個事務,如果已經存在乙個事務中,加入到這個事務中。

propagation_supports[səˈpɔ:t]支援

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

propagation_mandatory[ˈmændəˌtɔ:ri:, -ˌtəʊri:]受委託的

使用當前的事務,如果當前沒有事務,就跑出異常

propagation_requires_new

新建事務,如果當前存在事務,把當前事務掛起

propagation_not_supported

以非事務方式執行操作,如果當前存在事務,把當前事務掛起。

propagation_never

以非事務方式執行,如果當前存在事務,則跑出異常

propagation_nested

如果當前存在事務,則在巢狀事務內執行,如果當前沒有事務,則執行propagation_required類似的操作(jdbc3.0以後才有)

資料庫併發操作存在的異常情況

1、更新丟失:併發事務沒隔離,乙個失敗導致另外乙個事務也失敗。

2、髒讀去:乙個事務開始讀取了某行資料但是另外乙個事務已經更新了此資料但沒有能夠及時提交。

3、不可重複讀:乙個事務對同一行資料讀取兩次卻得到不同的結果。例如讀取途中令乙個事務對該資料進行了修改。

4、兩次更新問題:兩個併發事務同時讀取同一行資料,兩個都進行修改提交,第一次寫操作失效。

5、幻讀:一次事務中,兩次讀取同乙個表,結果集不一樣。

sql規範定義的四種事務隔離級別

1、未授權讀取(read uncommitted):稱未提交讀。允許髒讀但不允許更新丟失,如果乙個事務已經開始寫資料,則另外乙個事務部允許同時進行寫操作,但允許讀。可通過排它鎖實現。允許讀取已經被其它使用者修改但尚未提交確定的資料。

2、授權讀取(read committed):也稱提交讀。允許不可重複讀取但不允許髒讀取。

3、可重複讀(repeatable read):禁止不可重複讀取和髒讀取。

4、序列(serializable):也稱可序列讀。提供嚴格的事務隔離級別,要求事務序列化執行,事務只能乙個接乙個的執行,不能併發執行。

Spring事務傳播機制

在 spring的 transactiondefinition介面中一共定義了7種事務傳播屬性 propagation required 支援當前事務,如果當前沒有事務,就新建乙個事務。這是最常見的選擇,也是spring事務傳播機制的預設值。propagation supports 支援當前事務,如...

spring事務傳播機制

1.required 必須有乙個事務的支援。如果沒有事務,則新建立乙個,如果有父事務,則使用 fetch 父級事務 2.requires new 必定會建立乙個事務。如果有父事務,則掛起 suspend 父事務,等子事務執行完畢,在恢復 resume 父事務 3.supports 可以有或者沒有事務...

spring事務傳播機制

spring事務傳播機制 propagation required spring預設 如果已經存在事務,那麼加入當前事務,如果不存在事務,則新建事務。總是建立乙個新的事務。新建立事務a,而以前的事務b還在執行。此時有兩個事務,事務a先執行,事務b則被掛起。只有事務a執行完畢後,事務b將繼續執行。ro...