資料庫 髒讀 不可重複讀和幻讀的區別

2021-08-07 15:13:45 字數 595 閱讀 9781

1.髒讀

讀取另外乙個事務沒有提交的資料

解決方法:

把事務的隔離級別調整到read_committed

2.不可重複讀

同乙個事務中 兩個相同的查詢返回了不同的結果

在乙個事務a第一次讀取之後 另乙個事務b對資料進行了修改並且在a之前提交 此時a第二次讀取的資料和第一次不同

解決方法:

把資料庫的事務隔離級別調整到repeatable_read

3.幻讀

幻讀的重點在於新增或者刪除

同樣的條件, 第1次和第2次讀出來的記錄數不一樣

事務a先查詢了資料 此時事務b又進行了增刪操作並且提交 a再進行查詢時發現兩次查詢的記錄數不同就像出現了幻覺

解決方法:

資料庫事務隔離級別調整到serializable_read

ps: 之前不太能夠分清不可重複讀和幻讀的區別,二者的主要區別是:

不可重複讀的重點是修改 同樣的條件, 你讀取過的資料, 再次讀取出來發現不一樣了

而幻讀的重點在於新增或者刪除,同樣的條件, 第1次和第2次讀出來的記錄數不一樣

資料庫幻讀 髒讀 不可重複讀

要理解幻讀 髒讀 不可重複讀,必須先搞清楚事務的隔離級別 資料庫事務的隔離級別有4個,由低到高依次為read uncommitted read committed repeatable read serializable 這四個級別可以逐個解決髒讀 不可重複讀 幻讀 這幾類問題。隔離級別 髒讀不可重...

資料庫髒讀 不可重複讀 幻讀

資料庫髒讀 不可重複讀 幻讀 1.髒讀 髒讀就是指當乙個事務正在訪問資料,並且對資料進行了修改,而這種修改還沒有提交到資料庫中,這時,另外乙個事務也訪問這個資料,然後使用了這個資料。2.不可重複讀 是指在乙個事務內,多次讀同一資料。在這個事務還沒有結束時,另外乙個事務也訪問該同一資料。那麼,在第乙個...

資料庫髒讀,幻讀,不可重複讀

指乙個事務a正在訪問資料,並且對該資料進行了修改,但是這種修改還沒有提交到資料庫中 也可能因為某些原因rollback了 這時候另外乙個事務b也訪問這個資料,然後使用了這個被a修改的資料,那麼這個資料就是髒的,並不是資料庫中真實的資料。這就被稱作髒讀。解決辦法 把資料庫事務隔離級別調整到read c...