摘要:注意不僅可以控制事務(wù)傳播行為等,還可以控制事務(wù)隔離級別等。事物的隔離級別隔離級別越高,并發(fā)性能越低。在的隔離級別下,會出現(xiàn)幻讀的問題。可串行化是最高的隔離級別。
歡迎進(jìn)入JAVA基礎(chǔ)課程
博客地址:https://mp.csdn.net/mdeditor/...
本系列文章將主要針對JAVA一些基礎(chǔ)知識點(diǎn)進(jìn)行講解,為平時歸納所總結(jié),不管是剛接觸JAVA開發(fā)菜鳥還是業(yè)界資深人士,都希望對廣大同行帶來一些幫助。若有問題請及時留言或加QQ:243042162。
寄語:概述
近日,“有最美輔導(dǎo)員“和“最美大學(xué)生”發(fā)布儀式在央視播出,樹立起新時代輔導(dǎo)員和大學(xué)生的學(xué)習(xí)榜樣。當(dāng)下,我們也應(yīng)該爭做“最美程序員”,給世界一片美好。
數(shù)據(jù)庫是可以控制事務(wù)的傳播和隔離級別的,Spring在之上又進(jìn)一步進(jìn)行了封裝,可以在不同的項目、不同的操作中再次對事務(wù)的傳播行為和隔離級別進(jìn)行策略控制。注意:Spring不僅可以控制事務(wù)傳播行為(PROPAGATION_REQUIRED等),還可以控制事務(wù)隔離級別(ISOLATION_READ_UNCOMMITTED等)。
Spring 支持兩種類型的事務(wù)管理
編程式事務(wù)管理:這意味你通過編程的方式管理事務(wù),給你帶來極大的靈活性,但是難維護(hù)。
聲明式事務(wù)管理:這意味著你可以將業(yè)務(wù)代碼和事務(wù)管理分離,你只需用注解和 XML 配置
來管理事務(wù)。
臟讀(Drity Read):另一個事務(wù)修改了數(shù)據(jù),但尚未提交,而本事務(wù)中的SELECT會讀到這些未被提交的數(shù)據(jù)。
不可重復(fù)讀(Non-repeatable read): 解決了臟讀后,會遇到,同一個事務(wù)執(zhí)行過程中,另外一個事務(wù)提交了新數(shù)據(jù),因此本事務(wù)先后兩次讀到的數(shù)據(jù)結(jié)果會不一致。
幻讀(Phantom Read): 解決了不重復(fù)讀,保證了同一個事務(wù)里,查詢的結(jié)果都是事務(wù)開始時的狀態(tài)(一致性)。但是,如果另一個事務(wù)同時提交了新數(shù)據(jù),本事務(wù)再更新時,就會“驚奇的”發(fā)現(xiàn)了這些新數(shù)據(jù),貌似之前讀到的數(shù)據(jù)是“鬼影”一樣的幻覺。
事物的隔離級別隔離級別越高,并發(fā)性能越低。MySQL 默認(rèn)的級別是:Repeatable read 可重復(fù)讀。
READ UNCOMMITTED(未提交讀) 。 在RU的隔離級別下,事務(wù)A對數(shù)據(jù)做的修改,即使沒有提交,對于事務(wù)B來說也是可見的,這種問題叫臟讀。這是隔離程度較低的一種隔離級別,在實際運(yùn)用中會引起很多問題,因此一般不常用。
READ COMMITTED(提交讀) 。 在RC的隔離級別下,不會出現(xiàn)臟讀的問題。事務(wù)A對數(shù)據(jù)做的修改,提交之后會對事務(wù)B可見,舉例,事務(wù)B開啟時讀到數(shù)據(jù)1,接下來事務(wù)A開啟,把這個數(shù)據(jù)改成2,提交,B再次讀取這個數(shù)據(jù),會讀到最新的數(shù)據(jù)2。在RC的隔離級別下,會出現(xiàn)不可重復(fù)讀的問題。這個隔離級別是許多數(shù)據(jù)庫的默認(rèn)隔離級別。
REPEATABLE READ(可重復(fù)讀)。 在RR的隔離級別下,不會出現(xiàn)不可重復(fù)讀的問題。事務(wù)A對數(shù)據(jù)做的修改,提交之后,對于先于事務(wù)A開啟的事務(wù)是不可見的。舉例,事務(wù)B開啟時讀到數(shù)據(jù)1,接下來事務(wù)A開啟,把這個數(shù)據(jù)改成2,提交,B再次讀取這個數(shù)據(jù),仍然只能讀到1。在RR的隔離級別下,會出現(xiàn)幻讀的問題。幻讀的意思是,當(dāng)某個事務(wù)在讀取某個范圍內(nèi)的值的時候,另外一個事務(wù)在這個范圍內(nèi)插入了新記錄,那么之前的事務(wù)再次讀取這個范圍的值,會讀取到新插入的數(shù)據(jù)。Mysql默認(rèn)的隔離級別是RR,然而mysql的innoDB引擎間隙鎖成功解決了幻讀的問題。
SERIALIZABLE(可串行化)。 可串行化是最高的隔離級別。這種隔離級別強(qiáng)制要求所有事物串行執(zhí)行,在這種隔離級別下,讀取的每行數(shù)據(jù)都加鎖,會導(dǎo)致大量的鎖征用問題,性能最差。
參考網(wǎng)站:
(1)https://www.cnblogs.com/maypa...
(2)https://baijiahao.baidu.com/s...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/77890.html
摘要:注意不僅可以控制事務(wù)傳播行為等,還可以控制事務(wù)隔離級別等。事物的隔離級別隔離級別越高,并發(fā)性能越低。在的隔離級別下,會出現(xiàn)幻讀的問題。可串行化是最高的隔離級別。 歡迎進(jìn)入JAVA基礎(chǔ)課程 博客地址:https://mp.csdn.net/mdeditor/...本系列文章將主要針對JAVA一些基礎(chǔ)知識點(diǎn)進(jìn)行講解,為平時歸納所總結(jié),不管是剛接觸JAVA開發(fā)菜鳥還是業(yè)界資深人士,都希望對...
摘要:借鑒圖片僅用于學(xué)習(xí)分享,請尊重原創(chuàng)作者,勿用于商用。這其中最關(guān)鍵的一步就是從服務(wù)器獲得請求數(shù)據(jù)。基本步驟創(chuàng)建對象也就是創(chuàng)建一個異步調(diào)用對象。創(chuàng)建一個新的請求并指定該請求的方法及驗證信息。設(shè)置響應(yīng)請求狀態(tài)變化的函數(shù)。使用和實現(xiàn)局部刷新。 歡迎進(jìn)入JAVA基礎(chǔ)課程 博客地址:https://blog.csdn.net/houjiyu...本系列文章將主要針對JAVA一些基礎(chǔ)知識點(diǎn)進(jìn)行講解...
摘要:借鑒圖片僅用于學(xué)習(xí)分享,請尊重原創(chuàng)作者,勿用于商用。這其中最關(guān)鍵的一步就是從服務(wù)器獲得請求數(shù)據(jù)。基本步驟創(chuàng)建對象也就是創(chuàng)建一個異步調(diào)用對象。創(chuàng)建一個新的請求并指定該請求的方法及驗證信息。設(shè)置響應(yīng)請求狀態(tài)變化的函數(shù)。使用和實現(xiàn)局部刷新。 歡迎進(jìn)入JAVA基礎(chǔ)課程 博客地址:https://blog.csdn.net/houjiyu...本系列文章將主要針對JAVA一些基礎(chǔ)知識點(diǎn)進(jìn)行講解...
摘要:,用于調(diào)用垃圾收集器,在調(diào)用時,垃圾收集器將運(yùn)行以回收未使用的內(nèi)存空間。然而調(diào)用附帶一個免責(zé)聲明,無法保證對垃圾收集器的調(diào)用。所以并不能說是完美主動進(jìn)行了垃圾回收。 歡迎進(jìn)入JAVA基礎(chǔ)課程 博客地址:https://blog.csdn.net/houjiyu...本系列文章將主要針對JAVA一些基礎(chǔ)知識點(diǎn)進(jìn)行講解,為平時歸納所總結(jié),不管是剛接觸JAVA開發(fā)菜鳥還是業(yè)界資深人士,都希...
閱讀 2181·2021-11-19 09:55
閱讀 2637·2021-11-11 16:55
閱讀 3174·2021-09-28 09:36
閱讀 1945·2021-09-22 16:05
閱讀 3269·2019-08-30 15:53
閱讀 1805·2019-08-30 15:44
閱讀 2898·2019-08-29 13:10
閱讀 1338·2019-08-29 12:30