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