Ⅰ 資料庫的幻讀什麼意思
幻讀:是指兩次查詢結果集不一樣了。比如:
兩個並發事務A、B。在T1這個時刻,事務A通過篩選條件獲取到的記錄是10條。此時並發事務B往資料庫插入一條滿足事務A查詢條件的記錄。這時A還沒有結束,在事務內再次獲取數據時以相同的條件篩選,結果篩選出了11條記錄。這就是幻讀。
你可以這樣理解:
臟讀關注的是當前獲得的結果與資料庫結果不一樣,數據不同。
不可重復讀關注的同一事務內兩次讀取,但數據不同。
以上兩個都是同一結果集。
而幻讀強調的是,結果集變了。
幻讀造成的原因是,共享鎖並不能鎖住我篩選的結果集以外的數據,即便你開啟了可重復讀,想要避免的話,可以更改事務隔離級別。