잠금 기본 사항

Microsoft SQL Server Compact 4.0의 잠금 기능을 이해하려면 잠글 수 있는 리소스와 리소스를 잠그는 데 사용할 수 있는 다양한 모드에 대해 잘 알아야 합니다.

잠금 세분성

잠금 세분성은 잠금이 실행되는 수준을 의미합니다.

  • 테이블

  • 페이지

  • 데이터베이스

행 수준과 같이 작은 세분성에서 잠금을 실행하면 동시성이 증가하지만 많은 행이 잠길 경우 더 많은 잠금을 유지해야 합니다. 테이블 수준과 같이 큰 세분성에서 잠금을 실행하면 전체 테이블을 잠금으로써 다른 트랜잭션이 해당 테이블의 일부도 액세스할 수 없도록 제한하기 때문에 동시성이 감소합니다. 그러나 테이블 수준의 잠금에서는 적은 수의 잠금만 유지하면 됩니다.

기본적으로 SQL Server Compact 4.0에서는 데이터 페이지에 행 수준 잠금을 사용하고 인덱스 페이지에 페이지 수준 잠금을 사용합니다.

다음 표에서는 SQL Server Compact 4.0에서 잠글 수 있는 리소스를 보여 줍니다.

잠금

설명

RID

행 식별자로 테이블에 있는 하나의 행을 잠그는 데 사용됩니다.

PAG

데이터 페이지 또는 인덱스 페이지를 나타냅니다.

Tab

모든 데이터와 인덱스를 포함한 전체 테이블을 나타냅니다.

MD

테이블 메타데이터로 테이블 스키마를 보호하는 데 사용됩니다.

DB

데이터베이스를 잠그는 데 사용됩니다.

잠금 모드

잠금 모드는 동시 트랜잭션이 데이터에 액세스하는 방법을 결정합니다. SQL Server Compact 4.0에서는 잠가야 하는 리소스와 수행해야 할 작업에 따라 사용할 잠금 모드를 결정합니다.

다음 표에서는 SQL Server Compact 4.0에서 지원하는 잠금 모드에 대해 설명합니다.

잠금 모드

설명

공유(S)

읽기 액세스를 위해 리소스를 보호합니다. 리소스에 공유(S) 잠금이 설정되어 있는 동안에는 다른 트랜잭션이 해당 데이터를 수정할 수 없습니다.

배타(X)

삽입, 업데이트 또는 삭제와 같은 데이터 수정 작업을 나타냅니다. 동일한 리소스에 대해 여러 업데이트가 동시에 실행되지 않도록 합니다.

업데이트(U)

일반적인 교착 상태가 발생하는 것을 방지합니다. 한 번에 하나의 트랜잭션만 리소스에 대해 업데이트(U) 잠금을 확보할 수 있습니다. 트랜잭션이 리소스를 수정하면 업데이트(U) 잠금은 배타(X) 잠금으로 변환됩니다.

스키마

테이블 스키마에 종속된 작업을 실행할 때 사용됩니다. 스키마 잠금 유형으로는 스키마 수정(Sch-M)과 스키마 안정성(Sch-S)이 있습니다.

의도

잠금 계층을 설정합니다. 가장 일반적인 의도 잠금 유형은 IS, IU 및 IX입니다. 이러한 잠금은 트랜잭션이 모든 리소스에 대해서가 아니라 계층 내에 있는 일부 하위 리소스에 대해 실행되고 있음을 나타냅니다. 하위 수준의 리소스에 S, U 또는 X 잠금이 수행됩니다.

중요

기본 격리 수준인 커밋된 읽기의 경우 데이터를 읽을 때 SQL Server Compact 4.0의 SELECT 문에 S 잠금을 사용할 필요가 없습니다. MicrosoftSQL Server의 경우 S 잠금이 필요하지만 SQL Server Compact 4.0의 경우에는 커밋된 읽기를 적용하는 데 S 잠금이 필요하지 않습니다. SELECT 문에 필요한 잠금은 작업이 실행되는 동안 스키마를 보호하는 Sch-S 잠금뿐입니다. 결과적으로 SELECT 문은 동시성이 상당히 높습니다. 자세한 내용은 트랜잭션 격리 수준을 참조하십시오.

참고 항목

개념

잠금(SQL Server Compact)

잠금에 대한 개요

잠금 사용자 지정