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