커서 및 잠금

Microsoft SQL Server Compact 4.0에서 커서 정의의 SELECT 문은 다른 모든 SELECT 문에 적용되는 것과 동일한 트랜잭션 잠금 규칙에 따릅니다. 커서 정의의 SELECT 문을 포함한 모든 SELECT 문으로 획득한 트랜잭션 잠금은 다음 요소에 의해 제어됩니다.

  • 연결에 대한 트랜잭션 격리 수준 설정

  • FROM 절에 지정된 모든 잠금 힌트

기본 테이블이나 인덱스 커서의 경우에만 트랜잭션 격리 수준이 획득되는 잠금에 영향을 줄 수 있습니다.

중요 정보 중요

기본 격리 수준이 READ COMMITTED인 경우 SQL Server Compact 4.0는 데이터 위치를 지정하거나 데이터를 읽을 때 잠금을 획득하지 않습니다. READ COMMITTED 수준의 커서를 사용하려면 커서가 열려 있는 동안 스키마의 안정성을 보호하는 Sch-S 잠금이 필요합니다. 데이터가 변경되면 단독 잠금을 얻을 수 있습니다.

잠금은 커서와 독립 SELECT 문 모두에 대해 현재 트랜잭션의 끝까지 유지됩니다.

획득된 트랜잭션 잠금 유형과 관련하여 커서는 독립 SELECT 문과 동일한 규칙을 따르지만 잠금은 다른 시간대에 획득됩니다. 독립 SELECT 문이나 커서에 의해 생성된 잠금은 행이 필요할 때 항상 획득됩니다. 독립 SELECT 문의 경우에는 문이 실행될 때 모든 행을 검색합니다. 커서는 다음과 같이 커서 유형에 따라 다른 시간대에 행을 검색합니다.

  • 정적 커서는 커서가 열릴 때 전체 결과 집합을 검색합니다. 따라서 결과 집합의 각 행은 열릴 때 잠깁니다.

  • 키 집합 커서는 커서를 열 때 결과 집합의 각 행에 대한 키를 검색합니다. 따라서 결과 집합의 각 행은 열릴 때 잠깁니다.

  • 정방향 전용 커서는 행이 인출되어야 행을 검색합니다. 따라서 행에 대한 잠금은 행의 위치를 지정해야 획득됩니다.

표시: