저는 프로덕션에서 볼 수있는 다양한 교착 상태를 해결하려고 노력해 왔습니다. 교착 상태 추적을 사용하도록 설정했습니다. 흔적이 같은 키 잠금에 차단을 많이 보여SQL Server 2005에서 KEYLOCK 검사
내가 이해에서01/15/2010 08:25:07,spid15s,Unknown,keylock hobtid=72057594047758336 dbid=2
objectname=tempdb.dbo.MyTable indexname=IX_MyTable id=lock36977900 mode=X
associatedObjectId=72057594047758336
, 키 잠금이 삽입, 업데이트 또는 트랜잭션이 삽입, 업데이트 자체를 수행하는 동안 삭제되는 기록을 방지하기 위해 인덱스를 잠금, 삭제합니다.
잘못된 잠금을 요청하는 나쁜 쿼리 계획이 있다고 생각합니다. 내 develoment 시스템에서 동일한 쿼리를 실행하고 sp_lock을 실행하여 쿼리가 요구하는 잠금을 검사 할 수 있으며 목록에 일부 KEYLOCK이 표시됩니다. KEYLOCK이 잠그고있는 키의 범위는 어떻게 검사합니까?
단지 작은 메모. 이 방법은 클러스터 된 인덱스 또는 힙에만 적용됩니다. 만약 당신이 비 클러스터형 인덱스에 있다면, 다음과 같이 SELECT 힌트를 사용해야합니다. 'FROM myTable WITH (INDEX (myIndexName))' –
MSSQL2014의 경우 약간 변경되었습니다. WHERE %% LOCKRES %% = ' (0000ABCDEFAB) ' –