데이터베이스 엔진의 행 버전 관리 기반 격리 수준
MicrosoftSQL Server 데이터베이스 엔진에는 기존 트랜잭션 격리 수준을 새롭게 구현한 커밋된 읽기가 도입되어 행 버전 관리를 사용하는 문 수준 스냅숏을 제공합니다. 또한 SQL Server 데이터베이스 엔진에는 새로운 트랜잭션 격리 수준인 스냅숏이 도입되어 행 버전 관리를 사용하는 트랜잭션 수준 스냅숏을 제공합니다.
행 버전 관리를 사용하는 커밋된 읽기 격리는 READ_COMMITTED_SNAPSHOT 데이터베이스 옵션을 ON으로 설정하여 활성화합니다. 스냅숏 격리는 ALLOW_SNAPSHOT_ISOLATION 데이터베이스 옵션을 ON으로 설정하여 활성화합니다. 데이터베이스에 대해 이러한 옵션 중 하나라도 활성화되어 있으면 데이터베이스 엔진은 수정되는 각 행의 버전을 유지 관리합니다. 트랜잭션에서 행을 수정할 때마다 수정 전의 행 이미지가 버전 저장소의 페이지에 복사됩니다. 버전 저장소는 tempdb의 데이터 페이지 모음입니다. 여러 트랜잭션에서 행을 수정하면 행의 여러 버전이 버전 체인에서 연결됩니다. 행 버전 관리를 사용하는 읽기 작업은 트랜잭션이나 문이 시작될 때 커밋된 각 행의 마지막 버전을 검색합니다.
SQL Server 2000용으로 작성된 응용 프로그램이나 SQL Server에 새로 제공되는 응용 프로그램은 READ_COMMITTED_SNAPSHOT 데이터베이스 옵션이 ON일 때 커밋된 읽기 트랜잭션 격리 수준을 지정하여 행 관리를 사용하는 커밋된 읽기 격리를 구현합니다. 모든 읽기 작업은 문이 시작될 때 커밋된 행 버전을 확인하고 이를 통해 데이터의 문 수준 스냅숏을 제공합니다.
SQL Server 용으로 작성된 응용 프로그램은 ALLOW_SNAPSHOT_ISOLATION 데이터베이스 옵션이 ON일 때 스냅숏 트랜잭션 격리 수준을 지정하여 스냅숏 격리를 구현합니다. 스냅숏 트랜잭션의 모든 읽기 작업은 트랜잭션이 시작될 때 커밋된 행 버전을 확인하고 이를 통해 데이터의 트랜잭션 수준 스냅숏을 제공합니다.
행 버전 관리 기반 격리 수준을 사용하는 트랜잭션의 경우 읽기 작업은 데이터에 대한 공유 잠금을 요청하지 않습니다. 즉, 행 버전 관리를 사용하는 판독기가 같은 데이터를 액세스하는 다른 판독기나 기록기를 차단하지 않습니다. 기록기도 판독기를 차단하지 않습니다. 그러나 기록기는 행 버전 관리 기반 격리 수준에서 실행될 때 다른 기록기를 차단합니다. 두 쓰기 작업이 동시에 같은 데이터를 수정할 수 없습니다.
다음 표에서는 행 버전 관리 기반 격리 수준에 대한 자세한 내용을 제공하는 항목을 설명합니다.
항목 |
설명 |
---|---|
행 버전 관리의 개념을 설명합니다. |
|
행 버전 관리의 이점과 비용을 설명하고 행 버전 관리에 가장 적합한 시나리오를 위한 권장 사항을 제공합니다. |
|
데이터베이스에서 행 버전 관리를 활성화하는 옵션을 설명합니다. |
|
행 버전 관리 기반 격리 수준의 제한 사항을 설명합니다. |
|
행 버전 관리가 시스템에 주는 영향을 설명하고 데이터베이스 및 트랜잭션의 행 버전 관리 상태에 대한 정보를 반환하는 성능 카운터와 DMV(동적 관리 뷰)를 다룹니다. |