什麼是髒讀 不可重複讀 幻讀

2021-10-08 18:57:32 字數 676 閱讀 5196

在事務a修改資料之後提交資料之前,這時另乙個事務b來讀取資料,如果不加控制,事務b讀取到a修改過資料,之後a又對資料做了修改再提交,則b讀到的資料是髒資料,此過程稱為髒讀dirty read。

乙個事務內在讀取某些資料後的某個時間,再次讀取以前讀過的資料,卻發現其讀出的資料已經發生了變更、或者某些記錄已經被刪除了。

3、幻讀

事務a在按查詢條件讀取某個範圍的記錄時,事務b又在該範圍內插入了新的滿足條件的記錄,當事務a再次按條件查詢記錄時,會產生新的滿足條件的記錄(幻行 phantom row)

不可重複讀與幻讀有什麼區別?

不可重複讀的重點是修改:在同一事務中,同樣的條件,第一次讀的資料和第二次讀的「資料不一樣」。(因為中間有其他事務提交了修改)

幻讀的重點在於新增或者刪除:在同一事務中,同樣的條件,第一次和第二次讀出來的「記錄數不一樣」。(因為中間有其他事務提交了插入/刪除)

什麼是髒讀?幻讀?不可重複讀?

sql 標準定義了四個隔離級別 這裡需要注意的是 mysql 預設採用的 repeatable read隔離級別 oracle 預設採用的 read committed隔離級別 事務隔離機制的實現基於鎖機制和併發排程。其中併發排程使用的是mvvc 多版本併發控制 通過儲存修改的舊版本資訊來支援併發一...

什麼是髒讀,不可重複讀,幻讀

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

什麼是髒讀,不可重複讀,幻讀

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