잠금 기본 사항
Microsoft SQL Server 2005 Compact Edition(SQL Server Compact Edition)의 잠금 기능을 이해하려면 잠글 수 있는 리소스와 리소스를 잠그는 데 사용할 수 있는 다양한 모드에 대해 잘 알아야 합니다.
잠금 세분성
잠금 세분성은 잠금이 실행되는 수준을 의미합니다.
- 행
- 테이블
- 페이지
- 데이터베이스
행 수준과 같이 작은 세분성에서 잠금을 실행하면 동시성이 증가하지만 많은 행이 잠길 경우 더 많은 잠금을 유지해야 합니다. 테이블 수준과 같이 큰 세분성에서 잠금을 실행하면 전체 테이블을 잠금으로써 다른 트랜잭션이 해당 테이블의 일부도 액세스할 수 없도록 제한하기 때문에 동시성이 감소합니다. 그러나 테이블 수준의 잠금에서는 적은 수의 잠금만 유지하면 됩니다.
기본적으로 SQL Server Compact Edition 에서는 데이터 페이지에 행 수준 잠금을 사용하고 인덱스 페이지에 페이지 수준 잠금을 사용합니다.
다음 표에서는 SQL Server Compact Edition 에서 잠글 수 있는 리소스를 보여 줍니다.
잠금 | 설명 |
---|---|
RID |
행 식별자로 테이블에 있는 하나의 행을 잠그는 데 사용됩니다. |
PAG |
데이터 페이지 또는 인덱스 페이지를 나타냅니다. |
Tab |
모든 데이터와 인덱스를 포함한 전체 테이블을 나타냅니다. |
MD |
테이블 메타데이터로 테이블 스키마를 보호하는 데 사용됩니다. |
DB |
데이터베이스를 잠그는 데 사용됩니다. |
잠금 모드
잠금 모드는 동시 트랜잭션이 데이터에 액세스하는 방법을 결정합니다. SQL Server Compact Edition 에서는 잠가야 하는 리소스와 수행해야 할 작업에 따라 사용할 잠금 모드를 결정합니다.
다음 표에서는 SQL Server Compact Edition 에서 지원하는 잠금 모드에 대해 설명합니다.
잠금 모드 | 설명 |
---|---|
공유(S) |
읽기 액세스를 위해 리소스를 보호합니다. 리소스에 공유(S) 잠금이 설정되어 있는 동안에는 다른 트랜잭션이 해당 데이터를 수정할 수 없습니다. |
단독(X) |
삽입, 업데이트 또는 삭제와 같은 데이터 수정 작업을 나타냅니다. 동일한 리소스에 대해 여러 업데이트가 동시에 실행되지 않도록 합니다. |
업데이트(U) |
일반적인 교착 상태가 발생하는 것을 방지합니다. 한 번에 하나의 트랜잭션만 리소스에 대해 업데이트(U) 잠금을 확보할 수 있습니다. 트랜잭션이 리소스를 수정하면 업데이트(U) 잠금은 단독(X) 잠금으로 변환됩니다. |
스키마 |
테이블 스키마에 종속된 작업을 실행할 때 사용됩니다. 스키마 잠금 유형으로는 스키마 수정(Sch-M)과 스키마 안정성(Sch-S)이 있습니다. |
의도 |
잠금 계층을 설정합니다. 가장 일반적인 의도 잠금 유형은 IS, IU 및 IX입니다. 이러한 잠금은 트랜잭션이 모든 리소스에 대해서가 아니라 계층 내에 있는 일부 하위 리소스에 대해 실행되고 있음을 나타냅니다. 하위 수준의 리소스에 S, U 또는 X 잠금이 수행됩니다. |
중요: |
---|
기본 격리 수준인 커밋된 읽기의 경우 데이터를 읽을 때 SQL Server Compact Edition 의 SELECT 문에 S 잠금을 사용할 필요가 없습니다. Microsoft SQL Server 의 경우 S 잠금이 필요하지만 SQL Server Compact Edition 의 경우에는 커밋된 읽기를 적용하는 데 S 잠금이 필요하지 않습니다. SELECT 문에 필요한 잠금은 작업이 실행되는 동안 스키마를 보호하는 Sch-S 잠금뿐입니다. 결과적으로 SELECT 문은 동시성이 상당히 높습니다. 자세한 내용은 트랜잭션 격리 수준을 참조하십시오. |
참고 항목
개념
잠금(SQL Server Compact Edition)
잠금에 대한 개요
잠금 사용자 지정