使用WIHT(NOLOCK)有利也有弊,所以在決定使用之前,你一定需要了解清楚WITH(NOLOCK)的功能和缺陷,看其是否適合你的業務需求,不要覺得它能提升性能,稀里糊塗的就使用它。
--事務未提交回滾 BEGIN TRAN UPDATE dbo.student SET ca='6666' WHERE no=0 --COMMIT --ROLLBACK --同一個查詢框,不會死鎖 SELECT * FROM dbo.student AS S
--新開窗口查詢會死鎖 SELECT * FROM student
---查詢哪個表鎖了 SELECT request_session_id spid, OBJECT_NAME( resource_associated_entity_id ) tableName FROM sys.dm_tran_locks WHERE resource_type = 'OBJECT' ORDER BY request_session_id ASC --鎖詳細信息 sp_lock 57 --鎖詳細信息 sp_lock 72
--新的窗口,使用WITH(NOLOCK)就不會死鎖,但會把可能回滾的數據查詢出來 SELECT * FROM student WITH(NOLOCK)