4

나는 완전히 MSDN about table hints을 읽었으며 잠금 세분성 기본값을 찾지 못하는 것 같습니다. 가정 나는 다음과 같은 쿼리를 가지고 :SQL Server의 기본 잠금 단위는 무엇입니까?

SELECT TOP (1) * FROM MyTable WITH (UPDLOCK, READPAST) ORDER BY SomeColumn ASC; 

당신은 내가 UPDLOCKREADPAST 힌트를 지정, 볼 수 있지만 세분화되지 않은 같은 TABLOCK 또는 ROWLOCK 힌트.

어떤 입도 잠금 수준이 기본적으로 사용됩니까?

+0

기본적으로 행 수준 잠금입니다. 세션/트랜잭션이 약 1 초를 초과하면 5000 행 레벨 잠금, 잠금은 ** 테이블 레벨 잠금 (또는 파티션 된 테이블 인 경우 파티션 레벨)으로 ** 에스컬레이션 **됩니다. –

답변

14

'기본값'이 없습니다. 개체의 허용 된 옵션 (allow_page_locks/allow_row_locks), 작업 의도 (검사, 검사, 삽입)에 대한 정보, 행 집합의 예상 크기 및 행 집합의 예상 크기를 기반으로 세분성 (행, 페이지, (파티션 | 다른 요소의 수 (격리 수준, 읽기 전용 파일 그룹 등)입니다. 대부분의 경우 싱글 톤 작업에 대한 행 수준의 세분성과 검색에 대한 페이지 수준의 세밀도를 얻게됩니다. 게시 한 쿼리는 스캔이므로 페이지 수준의 세분성을 갖게 될 것입니다.

관련 문제