總結:對於不可重複讀和幻讀的區別是:不可重複讀圈了一塊地,這塊地不允許任何人動用,但是不管旁邊的地方是否開闢了一塊地。幻讀是不僅是圈的地,而且附近也不允許有新的地。這個對於區間查詢會有影響。所以不可重複讀和幻讀最大的區別是區間查詢的結果會不會一樣。幻讀保證結果一樣,但是不可重複讀不保證。mysql的事務預設級別是可重複讀。但是該可重複讀實現了部分的幻讀解決方案,之所以說是部分,是因為對於update可以正常執行,對於insert卻未必。可以參考最後兩個例子
髒讀(dirty read)
髒讀意味著乙個事務讀取了另乙個事務未提交的資料,而這個資料是有可能回滾
不可重複讀(unrepeatable read)
不可重複讀意味著,在資料庫訪問中,乙個事務範圍內兩個相同的查詢卻返回了不同資料。這是由於查詢時系統中其他事務修改的提交而引起的。
例如:事務b中對某個查詢執行兩次,當第一次執行完時,事務a對其資料進行了修改。事務b中再次查詢時,資料發生了改變
幻讀(phantom read)
幻讀,是指當事務不是獨立執行時發生的一種現象,例如第乙個事務對乙個表中的資料進行了修改,這種修改涉及到表中的全部資料行。同時,第二個事務也修改這個表中的資料,這種修改是向表中插入一行新資料。那麼,以後就會發生操作第乙個事務的使用者發現表中還有沒有修改的資料行,就好象發生了幻覺一樣.
髒讀,不可重複讀,幻讀
髒讀,不可重複讀,幻讀是由於資料庫事務的隔離性導致的問題。髒讀 乙個事務讀取到了其它未提交事務操作的記錄。不可重複讀 乙個事務a內,首次查詢到一條相同記錄,然後事務b修改該條記錄並提交,事務a再次執行相同查詢,得到了事務b更新後的結果,事務a兩次相同的查詢,卻得到了不同的結果,這個叫做不可重複讀。是...
髒讀 不可重複讀 幻讀
髒讀 事務a使用了資料,但是還沒來得及提交,事務b就使用了這個資料,對於事務b來說就是髒讀。允許髒讀 sql server select from category with nolock 不可重複讀 事務a在9點和12點都會操作乙份資料,但是在10點的時候,事務b也操作了該份資料,並且使其數值進行...
初識髒讀 不可重複讀 幻讀
i 髒讀 乙個事務讀到另乙個事務未提交的資料,導致多次查詢的結果不一致 以轉賬為例 mysql資料庫的預設隔離級別為 repeatable read,此隔離級別可以避免髒讀和不可重複讀,為了演示產生髒讀,開啟兩個a b兩個視窗,進行a事務和b事務。1.在a 視窗中將隔離級別設定為 red uncom...