1、ROWLOCK的使用html
一、ROWLOCK行級鎖確保,在用戶取得被更新的行,到該行進行更新,這段時間內不被其它用戶所修改。於是行級鎖便可保證數據的一致性,又能提升數據操做的併發性。數據庫
二、ROWLOCK告訴SQL Server只使用行級鎖,ROWLOCK語法可使用在SELECT,UPDATE和DELETE語句中。服務器
三、例如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 spa
B鏈接中若是執行
update tablename set colname='10' where id=3 --則要等待5秒
update tablename set colname='10' where id <>3 --可當即執行
htm
2、SQL Server中使用ROWLOCK須要注意的地方內存
一、若是你錯誤地使用在過多行上,數據庫並不會聰明到自動將行級鎖升級到頁面鎖,服務器也會由於行級鎖的開銷而消耗大量的內存和CPU,直至沒法響應。get
二、select 語句中,RowLock在不使用組合的狀況下是沒有意義的,With(RowLock,UpdLock) 這樣的組合才成立,查詢出來的數據使用RowLock來鎖定,當數據被Update的時候,鎖將被釋放it
參考資料: SQL Server 中 ROWLOCK 行級鎖 http://www.studyofnet.com/news/1047.htmltable