SQL Server 中 ROWLOCK 行級鎖


一、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的時候,鎖將被釋放


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM