數據庫事務隔離性

不可重複讀與幻讀比較相似,都是在一個事務中多次讀取到不同的數據。網絡上的總結如下
不可重複讀:所謂的虛讀,也就是大家經常說的不可重複讀,是指在數據庫訪問中,一個事務範圍內兩個相同的查詢卻返回了不同數據。這是由於查詢時系統中其他事務修改的提交而引起的。比如事務T1讀取某一數據,事務T2讀取並修改了該數據,T1爲了對讀取值進行檢驗而再次讀取該數據,便得到了不同的結果。
一種更易理解的說法是:在一個事務內,多次讀同一個數據。在這個事務還沒有結束時,另
一個事務也訪問該同一數據。那麼,在第一個事務的兩次讀數據之間。由於第二個事務的修改,那麼第一個事務讀到的數據可能不一樣,這樣就發生了在一個事務內
兩次讀到的數據是不一樣的,因此稱爲不可重複讀,即原始讀取不可重複。
所謂幻讀,是指事務A讀取與搜索條件相匹配的若干行。事務B以插入或刪除行等方式來修改事務A的結果集,然後再提交。
幻讀是指當事務不是獨立執行時發生的一種現象,例如第一個事務對一個表中的數據進行了修改,比如這種修改涉及到表中的“全部數據行”。同時,第 二個事務也
修改這個表中的數據,這種修改是向表中插入“一行新數據”。那麼,以後就會發生操作第一個事務的用戶發現表中還有沒有修改的數據行,就好象發生了幻覺一
樣.一般解決幻讀的方法是增加範圍鎖RangeS,鎖定檢鎖範圍爲只讀,這樣就避免了幻讀。簡單來說,幻讀是由插入或者刪除引起的。
大致的區別在於不可重複讀是由於另一個事務對數據的更改所造成的,而幻讀是由於另一個事務插入或刪除引起的

在這裏插入圖片描述在這裏插入圖片描述
在這裏插入圖片描述在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章