Spring中的事務隔離級別的介紹
spring事務:
什么是事務:
事務邏輯上的一組操作,組成這組操作的各個邏輯單元,要么一起成功,要么一起失敗.
事務特性(4種):
- 原子性 (atomicity):強調(diào)事務的不可分割.
- 一致性 (consistency):事務的執(zhí)行的前后數(shù)據(jù)的完整性保持一致.
- 隔離性 (isolation):一個事務執(zhí)行的過程中,不應該受到其他事務的干擾
- 持久性(durability) :事務一旦結(jié)束,數(shù)據(jù)就持久到數(shù)據(jù)庫
解決讀問題: 設置事務隔離級別(5種)
- DEFAULT 這是一個PlatfromTransactionManager默認的隔離級別,使用數(shù)據(jù)庫默認的事務隔離級別.
- 未提交讀(read uncommited) :臟讀,不可重復讀,虛讀都有可能發(fā)生
- 已提交讀 (read commited):避免臟讀。但是不可重復讀和虛讀有可能發(fā)生
- 可重復讀 (repeatable read) :避免臟讀和不可重復讀.但是虛讀有可能發(fā)生.
- 串行化的 (serializable) :避免以上所有讀問題.
Mysql 默認:可重復讀
Oracle 默認:讀已提交
事務隔離級別定義一個事務可能受其他事務并發(fā)活動的影響程度。另一個考慮事務隔離級別的角度,是把它想象為事務對于它處理的數(shù)據(jù)的自私程度。
事務的隔離要解決的問題有3個:
- 1,臟讀,即一個事務讀到另一個事務還沒有提交的數(shù)據(jù)。如果另一個事務失敗了,回滾了,那么第一個事務讀到的數(shù)據(jù)就是無效的數(shù)據(jù)。這就是臟讀。
- 2,不可重復讀,不可重復讀發(fā)生在一個事務里兩次查詢同一個數(shù)據(jù),發(fā)現(xiàn)查詢結(jié)果不一樣。這是因為在該事務的兩次查詢之間,有另一個事務更新了該數(shù)據(jù)。
- 3,幻讀,幻讀和不可重復讀比較類似。當一個事務t1,第一次查詢了一些行,第二次又查詢了一些行,發(fā)現(xiàn)兩次查詢出來的行個數(shù)不一樣,或者多了一些行,或者少了一些行,好像出現(xiàn)了幻覺一樣。這是因為在兩次查詢之間,有另一事務更新了符合第一個事務查詢條件的行。
對比不可重復讀和幻讀,就可以很好的理解它們的區(qū)別。不可重復讀針對的是一行或者說一個數(shù)據(jù),而幻讀針對的是多行數(shù)據(jù)。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
相關(guān)文章
springboot+vue2+elementui實現(xiàn)時間段查詢方法
這篇文章主要介紹了springboot+vue2+elementui實現(xiàn)時間段查詢方法,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧2024-05-05
NoHttpResponseException問題分析解決記錄
這篇文章主要為大家介紹了NoHttpResponseException問題分析解決記錄,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-08-08
如何使用Comparator比較接口實現(xiàn)ArrayList集合排序
這篇文章主要介紹了如何使用Comparator比較接口實現(xiàn)ArrayList集合排序問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12

