1、資料庫的ACID 在資料庫中,事務是要滿足ACID的,即A: 原子性、C:一致性、I:隔離性、D:持久性。其中隔離性是最放鬆的一個,可以利用資料庫鎖的機制或者版本並控制機制獲取更高的隔離級別,但是隨著隔離級別的提高,數據的併發能力有所下降。因此如何在並行和隔離性之間做一個權衡是一個至關重要的問題 ...
1、資料庫的ACID
在資料庫中,事務是要滿足ACID的,即A: 原子性、C:一致性、I:隔離性、D:持久性。其中隔離性是最放鬆的一個,可以利用資料庫鎖的機制或者版本並控制機制獲取更高的隔離級別,但是隨著隔離級別的提高,數據的併發能力有所下降。因此如何在並行和隔離性之間做一個權衡是一個至關重要的問題。
2、讀數據出現的幾種問題:
1) 臟讀:當一個事務正在訪問數據,並對數據進行了修改,但是該修改確未提交到資料庫中,這時另外一個事務也訪問這個數據,然後使用了這個修改的數據,那麼讀到的這個數據就是臟數據。
(讀到了未提交的數據,解決方法:在寫的時候加鎖)
2)不可重覆讀:一次事務內的兩次(多次)相同查詢,查詢到了不同的結果。(在讀數據的時候加鎖)
3)幻讀:一次事務內多次查詢返回的結果集不一樣(比如增加了或者減少了行記錄)。(串列化即可解決)。
臟讀--------->不可重覆讀----------->幻讀,事務的隔離性在不斷提高,但是並行不斷降低。