一、ROWLOCK的使用
1、ROWLOCK行級鎖確保,在用戶取得被更新的行,到該行進行更新,這段時間內不被其它用戶所修改。因而行級鎖即可保證數據的一致性,又能提高數據操作的並發性。
2、ROWLOCK告訴SQL Server只使用行級鎖,ROWLOCK語法可以使用在SELECT,UPDATE和DELETE語句中。
3、例如select語句中
A 連接中執行
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
begin tran
select * from tablename with (rowlock,UpdLock) where id=3
waitfor delay '00:00:05'
commit tran
B連接中如果執行
update tablename set colname='10' where id=3 --則要等待5秒
update tablename set colname='10' where id <>3 --可立即執行
二、SQL Server中使用ROWLOCK需要注意的地方
1、如果你錯誤地使用在過多行上,數據庫並不會聰明到自動將行級鎖升級到頁面鎖,服務器也會因為行級鎖的開銷而消耗大量的內存和CPU,直至無法響應。
2、select 語句中,RowLock在不使用組合的情況下是沒有意義的,With(RowLock,UpdLock) 這樣的組合才成立,查詢出來的數據使用RowLock來鎖定,當數據被Update的時候,鎖將被釋放
