잠금(SQL Server Compact)

여러 사용자나 응용 프로그램이 동시에 동일한 데이터에 액세스할 경우 잠금 기능을 사용하여 데이터가 동시에 변경되지 않도록 할 수 있습니다. 잠금은 Microsoft SQL Server Compact 데이터베이스 엔진에서 내부적으로 관리합니다. 또한 사용자가 수행한 동작을 기준으로 자동으로 설정 및 해제됩니다.

잠금 기능을 사용하지 않고 여러 사용자가 동시에 동일한 데이터를 업데이트할 경우 데이터베이스의 데이터는 논리적으로 올바르지 않게 됩니다. 이 경우 해당 데이터에 대해 쿼리가 실행되면 예상치 못한 결과가 발생할 수 있습니다.

응용 프로그램은 잠금을 직접 요청하지 않습니다. 그 대신 트랜잭션이 시작되고 트랜잭션 내에서 쿼리 언어, 데이터 조작 언어(DML) 또는 데이터 정의 언어(DDL)로 명령이 수행될 경우 SQL Server Compact은 사용자가 지정한 격리 수준에서 리소스를 보호하는 데 필요한 모든 리소스를 잠급니다.

SQL Server Compact는 모든 리소스에 대해 잠금을 실행하고 해제할 시기를 자동으로 결정합니다. 기본적으로 데이터 페이지에는 행 수준 잠금이 사용되고 인덱스 페이지에는 페이지 수준 잠금이 사용됩니다. 잠금 관리자는 행 잠금 수에 대한 구성 가능한 임계값이 초과되면 잠금 에스컬레이션을 자동으로 수행하여 시스템 리소스를 유지합니다. 잠금 관리자에서 세션당 할당할 수 있는 최대 잠금 수는 262,143개입니다.

일부 작업에 대한 잠금 세분성을 변경할 수 있습니다. 잠금 세분성을 변경하면 동시성에 역효과가 발생할 수 있으므로 주의하십시오.

SQL Server Compact는 다음 리소스를 잠글 수 있습니다.

  • 4KB 데이터 또는 인덱스 페이지

  • 테이블 스키마

  • 테이블

  • 데이터베이스

행 수준과 같이 작은 세분성에서 잠금을 실행하면 동시성이 증가하지만 많은 행이 잠길 경우 더 많은 잠금을 유지해야 하므로 오버헤드가 늘어납니다. 테이블 수준 등 큰 세분성에서 잠금을 실행하면 전체 테이블을 잠금으로써 해당 테이블에 대한 다른 트랜잭션의 액세스를 모두 제한하므로 동시성이 감소합니다. 그러나 테이블 수준에서 잠금을 실행하면 적은 수의 잠금이 유지되므로 오버헤드가 감소합니다.

항목

설명

잠금에 대한 개요

SQL Server Compact에 제공되는 잠금 기능의 기본 사항에 대해 설명합니다.

잠금 정보 표시

sys.lock_information 뷰에서 반환하는 표시 정보에 대해 설명합니다.

잠금 사용자 지정

잠금의 사용자 지정 방법에 대해 설명합니다.

표시: