溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring中的事務隔離級別的介紹

發(fā)布時間:2020-08-24 00:53:10 來源:腳本之家 閱讀:150 作者:李燦輝 欄目:編程語言

spring事務:

什么是事務:

事務邏輯上的一組操作,組成這組操作的各個邏輯單元,要么一起成功,要么一起失敗.

事務特性(4種):

  • 原子性 (atomicity):強調事務的不可分割.
  • 一致性 (consistency):事務的執(zhí)行的前后數據的完整性保持一致.
  • 隔離性 (isolation):一個事務執(zhí)行的過程中,不應該受到其他事務的干擾
  • 持久性(durability) :事務一旦結束,數據就持久到數據庫

解決讀問題: 設置事務隔離級別(5種)

  • DEFAULT 這是一個PlatfromTransactionManager默認的隔離級別,使用數據庫默認的事務隔離級別.
  • 未提交讀(read uncommited) :臟讀,不可重復讀,虛讀都有可能發(fā)生
  • 已提交讀 (read commited):避免臟讀。但是不可重復讀和虛讀有可能發(fā)生
  • 可重復讀 (repeatable read) :避免臟讀和不可重復讀.但是虛讀有可能發(fā)生.
  • 串行化的 (serializable) :避免以上所有讀問題.

Mysql 默認:可重復讀

Oracle 默認:讀已提交

事務隔離級別定義一個事務可能受其他事務并發(fā)活動的影響程度。另一個考慮事務隔離級別的角度,是把它想象為事務對于它處理的數據的自私程度。

事務的隔離要解決的問題有3個:

  • 1,臟讀,即一個事務讀到另一個事務還沒有提交的數據。如果另一個事務失敗了,回滾了,那么第一個事務讀到的數據就是無效的數據。這就是臟讀。
  • 2,不可重復讀,不可重復讀發(fā)生在一個事務里兩次查詢同一個數據,發(fā)現查詢結果不一樣。這是因為在該事務的兩次查詢之間,有另一個事務更新了該數據。
  • 3,幻讀,幻讀和不可重復讀比較類似。當一個事務t1,第一次查詢了一些行,第二次又查詢了一些行,發(fā)現兩次查詢出來的行個數不一樣,或者多了一些行,或者少了一些行,好像出現了幻覺一樣。這是因為在兩次查詢之間,有另一事務更新了符合第一個事務查詢條件的行。

對比不可重復讀和幻讀,就可以很好的理解它們的區(qū)別。不可重復讀針對的是一行或者說一個數據,而幻讀針對的是多行數據。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對億速云的支持。如果你想了解更多相關內容請查看下面相關鏈接

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI