一、為什么要引入鎖
多個用戶同時對數據庫的并發操作時會帶來以下數據不一致的問題:
丟失更新:A,B兩個用戶讀同一數據并進行修改,其中一個用戶的修改結果破壞了另一個修改的結果,比如訂票系統
臟讀:A用戶修改了數據,隨后B用戶又讀出該數據,但A用戶因為某些原因取消了對數據的修改,數據恢復原值,此時B得到的數據就與數據庫內的數據產生了不一致
不可重復讀:A用戶讀取數據,隨后B用戶讀出該數據并修改,此時A用戶再讀取數據時發現前后兩次的值不一致
并發控制的主要方法是封鎖,鎖就是在一段時間內禁止用戶做某些操作以避免產生數據不一致
二、鎖的種類
從整個數據庫應用系統編程者角度說,鎖分為兩類:
1 樂觀鎖
2 悲觀鎖
樂觀鎖的含義是:指望DBMS自動完成所有的鎖操作、且結果理想,程序員根本不知道鎖的存在;而悲觀鎖則完全相反:
<