使用Read Committed級別的隔離機制會出現的問題

使用Read Committed級別的隔離機制會出現的問題:
1. 虛讀:
  該問題由一個事務讀到另一個事務已提交的新插入數據引起的;導致連續兩次從數據庫中查詢的結果集不一致
2. 不可重複讀:
  該問題由一個事務讀到另一個事務已經提交的更新數據引起的,導致每一次查詢出來的同一條記錄都不一樣。
3. 第二類丟失數據:
  這是不可重複讀的特例,該問題由一個事務覆蓋另一個事務已提交的更新數據引起的,導致最後一一個事務對記錄所做的更改覆蓋其他事物對該記錄已提交的更新。
  
對於上面出現的問題,可以使用樂觀鎖和悲觀鎖來避免。
–悲觀鎖:悲觀鎖假定當多個事務同時訪問一個資源時,會出現以上問題。因而爲了避免這些問題,每個事務在操作一個資源時,都先把資源鎖起來,這樣就完全排除了當前事務受其他事務的影響,但是使用悲觀鎖影響併發性能,所以應該謹慎。
–樂觀鎖:樂觀鎖假定多個併發事務訪問一個資源時,靠數據庫管理系統自身的鎖機制就可以有效地避免這些問題。因而它主要依靠數據庫的隔離級別來自動管理鎖的工作。一旦出現以上問題,樂觀鎖會使用版本控制的手段來發現這些問題,並拋出異常,從而有效地避免不良後果的發生。

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