数据库并发一致性的问题
在并發(fā)環(huán)境下,事務(wù)的隔離性很難保證,因此會(huì)出現(xiàn)很多并發(fā)一致性問(wèn)題。
使用隔離級(jí)別來(lái)防止產(chǎn)生的并發(fā)一致性問(wèn)題
1)丟失修改
2)?讀臟數(shù)據(jù)???
3)不可重復(fù)讀
??????即每次讀取的結(jié)果可能不一致?
4)幻影讀
??? 舉個(gè)栗子:系統(tǒng)管理員A將數(shù)據(jù)庫(kù)中所有學(xué)生的成績(jī)從具體分?jǐn)?shù)改為ABCDE等級(jí),但是系統(tǒng)管理員B就在這個(gè)時(shí)候插入?
?? 了一條具體分?jǐn)?shù)的記錄,當(dāng)系統(tǒng)管理員A改結(jié)束后發(fā)現(xiàn)還有一條記錄沒(méi)有改過(guò)來(lái),就好像發(fā)生了幻覺(jué)一樣,這就叫幻讀。?
不可重復(fù)讀和幻影讀其實(shí)是本質(zhì)一樣的!不可重復(fù)讀是針對(duì)單個(gè)數(shù)據(jù)!幻影讀是針對(duì)一個(gè)范圍內(nèi)的數(shù)據(jù)?
?丟失修改
T1 和 T2 兩個(gè)事務(wù)都對(duì)一個(gè)數(shù)據(jù)進(jìn)行修改,T1 先修改,T2 隨后修改,T2 的修改覆蓋了 T1 的修改。
?
?
讀臟數(shù)據(jù)
T1 修改一個(gè)數(shù)據(jù),T2 隨后讀取這個(gè)數(shù)據(jù)。如果 T1 撤銷了這次修改,那么 T2 讀取的數(shù)據(jù)是臟數(shù)據(jù)。
?
?
不可重復(fù)讀
T2 讀取一個(gè)數(shù)據(jù),T1 對(duì)該數(shù)據(jù)做了修改。如果 T2 再次讀取這個(gè)數(shù)據(jù),此時(shí)讀取的結(jié)果和第一次讀取的結(jié)果不同。
?
?
幻影讀
T1 讀取某個(gè)范圍的數(shù)據(jù),T2 在這個(gè)范圍內(nèi)插入新的數(shù)據(jù),T1 再次讀取這個(gè)范圍的數(shù)據(jù),此時(shí)讀取的結(jié)果和和第一次讀取的結(jié)果不同。
?
產(chǎn)生并發(fā)不一致性問(wèn)題主要原因是破壞了事務(wù)的隔離性,解決方法是通過(guò)并發(fā)控制來(lái)保證隔離性。并發(fā)控制可以通過(guò)封鎖來(lái)實(shí)現(xiàn),但是封鎖操作需要用戶自己控制,相當(dāng)復(fù)雜。數(shù)據(jù)庫(kù)管理系統(tǒng)提供了事務(wù)的隔離級(jí)別,讓用戶以一種更輕松的方式處理并發(fā)一致性問(wèn)題。
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的数据库并发一致性的问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Redis:常见的面试题
- 下一篇: 数据库的隔离级别