SQL Server數據庫鎖的類型、用法及注意事項詳解

一、爲什麼要引入鎖

多個用戶同時對數據庫的併發操作時會帶來以下數據不一致的問題:

丟失更新:A,B兩個用戶讀同一數據並進行修改,其中一個用戶的修改結果破壞了另一個修改的結果,比如訂票系統

髒讀:A用戶修改了數據,隨後B用戶又讀出該數據,但A用戶因爲某些原因取消了對數據的修改,數據恢復原值,此時B得到的數據就與數據庫內的數據產生了不一致

不可重複讀:A用戶讀取數據,隨後B用戶讀出該數據並修改,此時A用戶再讀取數據時發現前後兩次的值不一致

併發控制的主要方法是封鎖,鎖就是在一段時間內禁止用戶做某些操作以避免產生數據不一致

二、鎖的種類

從整個數據庫應用系統編程者角度說,鎖分爲兩類:

1 樂觀鎖

2 悲觀鎖

樂觀鎖的含義是:指望DBMS自動完成所有的鎖操作、且結果理想,程序員根本不知道鎖的存在;而悲觀鎖則完全相反:

所有操作都必須自己完成鎖操作,根本不指望其他系統能得到支持。

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