잠금 힌트

SELECT , INSERT, UPDATEDELETE 문으로 테이블 수준 잠금 힌트의 범위를 지정하여 Microsoft SQL Server Compact 4.0의 기본 잠금 동작을 수정할 수 있습니다. 잠금 힌트는 절대적으로 필요한 경우에만 사용하십시오. 잠금 힌트를 사용하면 동시성이 저하될 수 있습니다.

중요 정보 중요

SQL Server Compact 4.0는 작업에 필요한 잠금을 자동으로 획득합니다. 다음 표에 나열된 잠금 힌트를 사용하면 SQL Server Compact 4.0에서 발생하는 잠금 수가 증가합니다. 잠금 힌트를 사용하여 리소스 잠금을 방지할 수는 없습니다.

다음 표에서는 SQL Server Compact 4.0에서 사용할 수 있는 잠금 힌트를 설명합니다.

잠금 힌트 이름

힌트 설명

GRANULARITY

ROWLOCK

데이터를 읽거나 수정할 때 행 수준 잠금을 사용합니다. 이러한 잠금은 적절한 시기에 획득 및 해제됩니다.

SELECT 작업은 행에 대해 S 잠금을 수행합니다.

PAGLOCK

데이터를 읽거나 수정할 때 페이지 수준 잠금을 사용합니다. 이러한 잠금은 적절한 시기에 획득 및 해제됩니다.

SELECT 작업은 페이지에 대해 S 잠금을 수행합니다.

TABLOCK

데이터를 읽거나 수정할 때 테이블 잠금을 사용합니다. 이 잠금은 문 끝까지 유지됩니다.

SELECT 작업은 테이블에 대해 S 잠금을 수행합니다.

DBLOCK

데이터를 읽거나 수정할 때 데이터베이스 잠금을 사용합니다. 이 잠금은 문 끝까지 유지됩니다.

SELECT 작업은 데이터베이스에 대해 S 잠금을 수행합니다.

LOCKMODES

UPDLOCK

테이블을 읽는 동안 공유 잠금 대신 업데이트 잠금을 사용하고 문이나 트랜잭션 끝까지 유지 잠금을 사용합니다. UPDLOCK을 사용하여 다른 판독기를 차단하지 않고 데이터를 읽을 수 있으며, 마지막으로 데이터를 읽은 후 데이터가 변경되지 않았다는 확신을 가지고 나중에 업데이트할 수 있습니다.

SELECT 작업은 U 잠금을 수행합니다. 기본 세분성은 ROWLOCK입니다.

XLOCK

테이블을 읽는 동안 공유 잠금 대신 단독 잠금을 사용하고 문이나 트랜잭션 끝까지 유지 잠금을 사용합니다.

SELECT 작업은 X 잠금을 수행합니다. 기본 세분성은 ROWLOCK입니다.

DURATION

HOLDLOCK

필요한 테이블, 행 또는 데이터 페이지가 더 이상 필요하지 않게 되는 즉시 잠금을 해제하는 대신 유지 잠금을 사용하여 트랜잭션이 완료될 때까지 잠금을 유지합니다.

세분성을 지정하지 않으면 ROWLOCK이 적용됩니다.

NOLOCK

잠금을 실행하지 않습니다. SELECT 작업의 기본값입니다. 이 설정은 INSERT, UPDATEDELETE 문에 적용되지 않습니다.

참고 참고
SQL Server에서 NOLOCK 힌트는 커밋되지 않은 읽기 동작을 설정합니다. SQL Server Compact 4.0에서 NOLOCK 힌트를 사용하면 커밋된 읽기 격리 수준이 지정됩니다. SQL Server Compact 4.0는 데이터를 보호하는 데 도움이 되는 공유 잠금을 사용하지 않고도 데이터를 읽을 수 있도록 데이터 복사본을 유지 관리합니다.

잠금 힌트의 사용 방법은 SQL Server 온라인 설명서에서 "잠금 힌트"를 참조하십시오.

SQL Server Compact 4.0와 SQL Server에서의 잠금 힌트 사용은 유사합니다. 그러나 SQL Server Compact 4.0의 경우 NOLOCK 힌트는 SQL Server의 경우와 매우 다른 동작을 수행합니다. SQL Server Compact 4.0에서 NOLOCK 힌트는 SELECT 문의 기본값이지만 커밋된 읽기 동작을 적용합니다.

SQL Server에서 기본 격리 수준이 커밋된 읽기인 SELECT 문은 행을 읽을 때 행에 대한 S 잠금이 수행되고 해제되도록 합니다. 즉, 격리 수준을 적용하기는 하지만 S 잠금이 필요한 행에 호환되지 않는 잠금이 있으면 SELECT 문이 대기한다는 의미입니다. NOLOCK 힌트를 지정하면 SELECT 작업은 S 잠금을 수행하지 않고 데이터를 읽습니다. 즉, 작업은 성공할 수 있지만 SELECT 문이 커밋되지 않은 데이터를 읽을 수 있다는 의미이기도 합니다.

SQL Server Compact 4.0는 데이터가 커밋된 읽기가 되도록 할 때 S 잠금을 사용하지 않습니다. SQL Server Compact 4.0는 데이터를 변경할 때 페이지 버전 관리 메커니즘을 사용하므로 SELECT 문에 필요한 데이터는 적절한 페이지 복사본에서 읽을 수 있습니다. 그러므로 S 잠금을 수행하여 커밋된 읽기를 보장할 필요가 없습니다. 따라서 SQL Server Compact 4.0는 SELECT 문에 NOLOCK을 사용하지만 커밋된 읽기 격리 수준에서 데이터를 읽을 수 있습니다. SQL Server Compact 4.0에서는 커밋되지 않은 읽기를 사용할 수 없습니다.

참고 참고

NOLOCK 힌트는 Sch-S 또는 Sch-X 잠금에 영향을 주지 않습니다.

표시: