真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

mysql中臟讀、不可重復(fù)讀和幻讀的概念

本篇內(nèi)容介紹了“MySQL中臟讀、不可重復(fù)讀和幻讀的概念”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),華容企業(yè)網(wǎng)站建設(shè),華容品牌網(wǎng)站建設(shè),網(wǎng)站定制,華容網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,華容網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

臟讀、不可重復(fù)讀、幻讀

在現(xiàn)代關(guān)系型數(shù)據(jù)庫中,事務(wù)機制是非常重要的,假如在多個事務(wù)并發(fā)操作數(shù)據(jù)庫時,如果沒有有效的機制進行避免就會導(dǎo)致出現(xiàn)臟讀,不可重復(fù)讀,幻讀。


臟讀

1、在事務(wù)A執(zhí)行過程中,事務(wù)A對數(shù)據(jù)資源進行了修改,事務(wù)B讀取了事務(wù)A修改后的數(shù)據(jù)。

2、由于某些原因,事務(wù)A并沒有完成提交,發(fā)生了RollBack操作,則事務(wù)B讀取的數(shù)據(jù)就是臟數(shù)據(jù)。

這種讀取到另一個事務(wù)未提交的數(shù)據(jù)的現(xiàn)象就是臟讀(Dirty Read)。

mysql中臟讀、不可重復(fù)讀和幻讀的概念  
 

不可重復(fù)讀

事務(wù)B讀取了兩次數(shù)據(jù)資源,在這兩次讀取的過程中事務(wù)A修改了數(shù)據(jù),導(dǎo)致事務(wù)B在這兩次讀取出來的數(shù)據(jù)不一致。

這種在同一個事務(wù)中,前后兩次讀取的數(shù)據(jù)不一致的現(xiàn)象就是不可重復(fù)讀(Nonrepeatable Read)。

mysql中臟讀、不可重復(fù)讀和幻讀的概念  
 

幻讀

事務(wù)B前后兩次讀取同一個范圍的數(shù)據(jù),在事務(wù)B兩次讀取的過程中事務(wù)A新增了數(shù)據(jù),導(dǎo)致事務(wù)B后一次讀取到前一次查詢沒有看到的行。

幻讀和不可重復(fù)讀有些類似,但是幻讀強調(diào)的是集合的增減,而不是單條數(shù)據(jù)的更新。

mysql中臟讀、不可重復(fù)讀和幻讀的概念  
 

第一類更新丟失

事務(wù)A和事務(wù)B都對數(shù)據(jù)進行更新,但是事務(wù)A由于某種原因事務(wù)回滾了,把已經(jīng)提交的事務(wù)B的更新數(shù)據(jù)給覆蓋了。這種現(xiàn)象就是第一類更新丟失。

mysql中臟讀、不可重復(fù)讀和幻讀的概念  
 

第二類更新丟失

其實跟第一類更新丟失有點類似,也是兩個事務(wù)同時對數(shù)據(jù)進行更新,但是事務(wù)A的更新把已提交的事務(wù)B的更新數(shù)據(jù)給覆蓋了。這種現(xiàn)象就是第二類更新丟失。

mysql中臟讀、不可重復(fù)讀和幻讀的概念  
 

事務(wù)隔離級別

為了解決以上的問題,主流的關(guān)系型數(shù)據(jù)庫都會提供四種事務(wù)的隔離級別。事務(wù)隔離級別從低到高分別是:讀未提交、讀已提交、可重復(fù)讀、串行化。事務(wù)隔離級別等級越高,越能保證數(shù)據(jù)的一致性和完整性,但是執(zhí)行效率也越低。所以在設(shè)置數(shù)據(jù)庫的事務(wù)隔離級別時需要做一下權(quán)衡,MySQL默認是可重復(fù)讀的級別。

 

讀未提交

讀未提交(Read Uncommitted),是最低的隔離級別,所有的事務(wù)都可以看到其他未提交的事務(wù)的執(zhí)行結(jié)果。只能防止第一類更新丟失,不能解決臟讀,可重復(fù)讀,幻讀,所以很少應(yīng)用于實際項目。

 

讀已提交

讀已提交(Read Committed), 在該隔離級別下,一個事務(wù)的更新操作結(jié)果只有在該事務(wù)提交之后,另一個事務(wù)才可能讀取到同一筆數(shù)據(jù)更新后的結(jié)果。可以防止臟讀和第一類更新丟失,但是不能解決可重復(fù)讀和幻讀的問題。

 

可重復(fù)讀

可重復(fù)讀(Repeatable Read),MySQL默認的隔離級別。在該隔離級別下,一個事務(wù)多次讀同一個數(shù)據(jù),在這個事務(wù)還沒結(jié)束時,其他事務(wù)不能訪問該數(shù)據(jù)(包括了讀寫),這樣就可以在同一個事務(wù)內(nèi)兩次讀到的數(shù)據(jù)是一樣的。可以防止臟讀、不可重復(fù)讀、第一類更新丟失、第二類更新丟失的問題,不過還是會出現(xiàn)幻讀。

 

串行化

串行化(Serializable),這是最高的隔離級別。它要求事務(wù)序列化執(zhí)行,事務(wù)只能一個接著一個地執(zhí)行,不能并發(fā)執(zhí)行。在這個級別,可以解決上面提到的所有并發(fā)問題,但可能導(dǎo)致大量的超時現(xiàn)象和鎖競爭,通常不會用這個隔離級別。

 

“mysql中臟讀、不可重復(fù)讀和幻讀的概念”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!


網(wǎng)站欄目:mysql中臟讀、不可重復(fù)讀和幻讀的概念
網(wǎng)頁網(wǎng)址:http://weahome.cn/article/gssiig.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部