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

相关文章
相关标签/搜索