1. 程式人生 > >不可重復讀和幻讀的區別

不可重復讀和幻讀的區別

span 發現 一次 ble 第一次 需要 隔離級別 ron 莫名其妙

不可重復讀和幻讀的區別

  在可重復讀中,該sql第一次讀取到數據後,就將這些數據加鎖,其它事務無法修改這些數據,就可以實現可重復 讀了。但這種方法卻無法鎖住insert的數據,所以當事務A先前讀取了數據,或者修改了全部數據,事務B還是可以insert數據提交,這時事務A就會 發現莫名其妙多了一條之前沒有的數據,這就是幻讀,不能通過行鎖來避免。需要Serializable隔離級別 ,讀用讀鎖,寫用寫鎖,讀鎖和寫鎖互斥,這麽做可以有效的避免幻讀、不可重復讀、臟讀等問題,但會極大的降低數據庫的並發能力。

  所以說不可重復讀和幻讀最大的區別,就在於如何通過鎖機制來解決他們產生的問題。

參考:http://blog.csdn.net/moshenglv/article/details/56664671

不可重復讀和幻讀的區別