SQL Server 中 ROWLOCK 行級鎖

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

相關文章
相關標籤/搜索