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

2022-08-18 04:09:12 字數 594 閱讀 9523

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

解決辦法:把資料庫事務隔離級別調整到read_committed

即讓使用者在更新時鎖定資料庫,阻止其他使用者讀取,直到更新全部完成才讓你讀取。

指乙個事務a對乙個表中的資料進行了修改,而且該修改涉及到表中所有的資料行;同時另乙個事務b也在修改表中的資料,該修改是向表中插入一行新資料。那麼經過這一番操作之後,操作事務a的使用者就會發現表中還有沒修改的資料行,就像發生了幻覺一樣。這就被稱作幻讀。

解決辦法:把資料庫事務隔離級別調整到serializable_read

指在乙個事務a內,多次讀同乙個資料,但是事務a沒有結束時,另外乙個事務b也訪問該同一資料。那麼在事務a的兩次讀資料之間,由於事務b的修改導致事務a兩次讀到的資料可能是不一樣的。這就發生了在乙個事務內兩次讀到的資料不一樣,這就被稱作不可重複讀。

解決辦法:把資料庫事務隔離級別調整到repeatable_read

注:級別高低:髒讀 < 不可重複讀 < 幻讀

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

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

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

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

髒讀,不可重複讀,幻讀

髒讀,不可重複讀,幻讀是由於資料庫事務的隔離性導致的問題。髒讀 乙個事務讀取到了其它未提交事務操作的記錄。不可重複讀 乙個事務a內,首次查詢到一條相同記錄,然後事務b修改該條記錄並提交,事務a再次執行相同查詢,得到了事務b更新後的結果,事務a兩次相同的查詢,卻得到了不同的結果,這個叫做不可重複讀。是...