잠금 세분성 및 계층

Microsoft SQL Server 데이터베이스 엔진 은 한 트랜잭션으로 여러 유형의 리소스를 잠글 수 있는 다양한 세분성의 잠금을 제공합니다. 잠금 비용을 최소화하기 위해 데이터베이스 엔진 은 자동으로 작업에 맞는 수준에서 리소스를 잠급니다. 행과 같이 작은 세분성에서 잠그면 동시성이 향상되지만 많은 행을 잠글 경우 더 많은 잠금을 보유해야 하므로 오버헤드가 늘어납니다. 테이블과 같이 큰 세분성에서 잠그면 전체 테이블이 잠겨 다른 트랜잭션이 테이블에 액세스하지 못하게 제한되므로 동시성은 떨어지지만 유지 관리할 잠금 수가 적으므로 오버헤드가 줄어듭니다.

데이터베이스 엔진 이 리소스를 완전히 보호하기 위해 여러 수준의 세분성에서 잠금을 획득해야 하는 경우가 많습니다. 이러한 여러 수준의 세분성 잠금 그룹을 잠금 계층 구조라고 합니다. 예를 들어 인덱스 읽기를 완전히 보호하기 위해 데이터베이스 엔진 의 인스턴스에서는 행에 대한 공유 잠금과 페이지와 테이블에 대한 의도 공유 잠금을 획득해야 합니다.

다음 표에서는 데이터베이스 엔진 이 잠글 수 있는 리소스를 보여 줍니다.

리소스 설명

RID

행 식별자는 힙 내의 단일 행을 잠그는 데 사용됩니다.

KEY

인덱스 내의 행 잠금은 직렬화 가능한 트랜잭션에서 키 범위를 보호하는 데 사용됩니다.

PAGE

데이터 또는 인덱스 페이지와 같은 데이터베이스의 8KB 페이지입니다.

EXTENT

데이터 또는 인덱스 페이지와 같은 인접한 8개의 페이지 그룹입니다.

HOBT

힙 또는 B-트리입니다. 클러스터형 인덱스가 없는 테이블에서 데이터 페이지의 힙이나 인덱스를 보호하는 잠금입니다.

TABLE

모든 데이터와 인덱스가 포함된 전체 테이블입니다.

FILE

데이터베이스 파일입니다.

APPLICATION

응용 프로그램이 지정한 리소스입니다.

METADATA

메타데이터 잠금입니다.

ALLOCATION_UNIT

할당 단위입니다.

DATABASE

전체 데이터베이스입니다.

참고 항목

개념

잠금 모드
잠금 호환성(데이터베이스 엔진)

도움말 및 정보

SQL Server 2005 지원 받기