2010-05-14 3 views

답변

5

아니하지만 당신은 SQL 서버 2005에 SNAPSHOT ISOLATION 데이터베이스 레벨을 사용할 수 있으며 최대, 그것은 교착 상태

SQL 서버 2005은 스냅 숏 격리의 도입과 함께 SQL-92 분리 레벨로 확장 도입에 많은 도움이 될 것입니다 READ COMMITTED의 추가 구현이 필요합니다. 새로운 READ_COMMITTED_SNAPSHOT 격리 수준은 모든 트랜잭션에 대해 READ COMMITTED를 투명하게 대체 할 수 있습니다.

SNAPSHOT 격리는 트랜잭션 내에서 읽은 데이터가 다른 동시 트랜잭션의 변경 내용을 절대로 반영하지 않도록 지정합니다. 트랜잭션은 트랜잭션이 시작될 때 존재하는 데이터 행 버전을 사용합니다. SNAPSHOT 트랜잭션이 다른 트랜잭션의 데이터 쓰기를 차단하지 않도록 데이터를 읽을 때 잠금이 설정되지 않습니다. 데이터를 쓰는 트랜잭션은 스냅 숏 트랜잭션이 데이터를 읽지 못하도록 차단하지 않습니다. 이를 사용하려면 ALLOW_SNAPSHOT_ISOLATION 데이터베이스 옵션을 설정하여 스냅 샷 격리를 활성화해야합니다.

READ_COMMITTED_SNAPSHOT 데이터베이스 옵션은 데이터베이스에서 스냅 숏 격리를 사용할 때 기본 READ COMMITTED 격리 수준 동작을 결정합니다. READ_COMMITTED_SNAPSHOT ON을 명시 적으로 지정하지 않으면 모든 암시 적 트랜잭션에 READ COMMITTED가 적용됩니다. 이렇게하면 READ_COMMITTED_SNAPSHOT OFF (기본값) 설정과 동일한 동작이 발생합니다. READ_COMMITTED_SNAPSHOT OFF가 적용되면 데이터베이스 엔진은 공유 잠금을 사용하여 기본 격리 수준을 적용합니다. READ_COMMITTED_SNAPSHOT 데이터베이스 옵션을 ON으로 설정하면 데이터베이스 엔진은 잠금을 사용하여 데이터를 보호하는 대신 행 버전 및 스냅 숏 격리를 기본값으로 사용합니다.

0

데이터베이스에 따라 다릅니다. 일부 데이터베이스 엔진에서는 더티 읽기 또는 유사한 동작을 기본값으로 설정할 수 있습니다.

예를 들어 일부 MSSQL Server 버전에서는 SQLMenace의 게시물에 설명 된대로 데이터베이스를 스냅 샷 격리로 설정할 수 있습니다.

+0

스냅 샷 격리는 더티 읽기가 아니므로 스냅 숏 격리는 사용자가 배치를 시작했을 때와 같은 데이터 읽기입니다. 더티 읽기는 절대로 커밋되지 않았지만 롤백되었을 수있는 데이터를 읽는 것입니다. (노 락, 커밋되지 않은 읽기) – SQLMenace

+0

그 점을 지적 해 주셔서 감사합니다. 내 대답은 지금 오해의 소지가 적습니다. 하지만, 묻는 사람은 여전히 ​​자신의 데이터베이스를 지정하지 않았고 아마 그렇지 않을 것입니다. – marr75

관련 문제