-
共享鎖
鎖定
共享鎖,又稱為讀鎖,可以查看但無法修改和刪除的一種數據鎖。
- 中文名
- 共享鎖
- 外文名
- Share Locks
- 由非更新
- 操作創建的鎖。
- 其他用户
- 可以併發讀取數據
- 都不能獲取
- 數據上的排他鎖,
- 簡 稱
- S鎖
共享鎖釋義
共享鎖(S鎖)又稱為讀鎖,若事務T對數據對象A加上S鎖,則事務T只能讀A;其他事務只能再對A加S鎖,而不能加X鎖,直到T釋放A上的S鎖。這就保證了其他事務可以讀A,但在T釋放A上的S鎖之前不能對A做任何修改。
共享鎖主要區別
1.共享鎖(S鎖):如果事務T對數據A加上共享鎖後,則其他事務只能對A再加共享鎖,不能加排他鎖。
排他鎖(X鎖):如果事務T對數據A加上排他鎖後,則其他事務不能再對A加任任何類型的封鎖。獲准排他鎖的事務既能讀數據,又能修改數據。
共享鎖共享鎖的使用
在第一個連接中執行以下語句
begin tran
select * from table1 holdlock -holdlock人為加鎖
where B='b2'
waitfor delay '00:00:30' --等待30秒
commit tran
在第二個連接中執行以下語句
begin tran
select A,C from table1
where B='b2'
update table1
set A='aa'
where B='b2'
commit tran
若同時執行上述兩個語句,則第二個連接中的select查詢可以執行
而update必須等待第一個事務釋放共享鎖轉為排它鎖後才能執行 即要等待30秒
- 參考資料
-
- 1. 獨佔鎖和共享鎖的區別 .愛問知識人[引用日期2012-12-18]