잠금(SQL Server Compact Edition)
여러 사용자나 응용 프로그램이 동시에 동일한 데이터에 액세스할 경우 잠금 기능을 사용하여 데이터가 동시에 변경되지 않도록 할 수 있습니다. 잠금은 Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition)데이터베이스 엔진 에서 내부적으로 관리합니다. 또한 사용자가 수행한 작업을 기준으로 자동으로 설정 및 해제됩니다.
잠금 기능을 사용하지 않고 여러 사용자가 동시에 동일한 데이터를 업데이트할 경우 데이터베이스의 데이터는 논리적으로 올바르지 않게 됩니다. 이 경우 해당 데이터에 대해 쿼리가 실행되면 예상치 못한 결과가 발생할 수 있습니다.
응용 프로그램은 잠금을 직접 요청하지 않습니다. 그 대신 트랜잭션이 시작되고 트랜잭션 내에서 쿼리 언어, 데이터 조작 언어(DML) 또는 데이터 정의 언어(DDL)로 명령이 수행될 경우 SQL Server Compact Edition 은 사용자가 지정한 격리 수준에서 리소스를 보호하는 데 필요한 모든 리소스를 잠급니다.
SQL Server Compact Edition 는 모든 리소스에 대해 잠금을 실행하고 해제할 시기를 자동으로 결정합니다. 기본적으로 데이터 페이지에는 행 수준 잠금이 사용되고 인덱스 페이지에는 페이지 수준 잠금이 사용됩니다. 잠금 관리자는 행 잠금 수에 대한 구성 가능한 임계값이 초과되면 잠금 에스컬레이션을 자동으로 수행하여 시스템 리소스를 유지합니다. 잠금 관리자에서 세션당 할당할 수 있는 최대 잠금 수는 262,143개입니다.
일부 작업에 대한 잠금 세분성을 변경할 수 있습니다. 잠금 세분성을 변경하면 동시성에 역효과가 발생할 수 있으므로 주의하십시오.
SQL Server Compact Edition 는 다음 리소스를 잠글 수 있습니다.
- 행
- 4KB 데이터 또는 인덱스 페이지
- 테이블 스키마
- 테이블
- 데이터베이스
행 수준과 같이 작은 세분성에서 잠금을 실행하면 동시성이 증가하지만 많은 행이 잠길 경우 더 많은 잠금을 유지해야 하므로 오버헤드가 늘어납니다. 테이블 수준 등 큰 세분성에서 잠금을 실행하면 전체 테이블을 잠금으로써 해당 테이블에 대한 다른 트랜잭션의 액세스를 모두 제한하므로 동시성이 감소합니다. 그러나 테이블 수준에서 잠금을 실행하면 적은 수의 잠금이 유지되므로 오버헤드가 감소합니다.
섹션 내용
항목 | 설명 |
---|---|
SQL Server 2005 Compact Edition 에 제공되는 잠금 기능의 기본 사항에 대해 설명합니다. |
|
sys.lock_information 뷰에서 반환하는 표시 정보에 대해 설명합니다. |
|
잠금의 사용자 지정 방법에 대해 설명합니다. |