數據庫的臟讀、不可重復讀和幻讀區別


1、數據庫的ACID

        在數據庫中,事務是要滿足ACID的,即A: 原子性、C:一致性、I:隔離性、D:持久性。其中隔離性是最放松的一個,可以利用數據庫鎖的機制或者版本並控制機制獲取更高的隔離級別,但是隨着隔離級別的提高,數據的並發能力有所下降。因此如何在並行和隔離性之間做一個權衡是一個至關重要的問題。

2、讀數據出現的幾種問題:

1) 臟讀:當一個事務正在訪問數據,並對數據進行了修改,但是該修改確未提交到數據庫中,這時另外一個事務也訪問這個數據,然后使用了這個修改的數據,那么讀到的這個數據就是臟數據。

(讀到了未提交的數據,解決方法:在寫的時候加鎖)

2)不可重復讀:一次事務內的兩次(多次)相同查詢,查詢到了不同的結果。(在讀數據的時候加鎖)

3)幻讀:一次事務內多次查詢返回的結果集不一樣(比如增加了或者減少了行記錄)。(串行化即可解決)。

臟讀--------->不可重復讀----------->幻讀,事務的隔離性在不斷提高,但是並行不斷降低。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM