INF: ODBC 트랜잭션 격리 수준

만료된 KB 콘텐츠 고지 사항

이 문서는 Microsoft에서 더 이상 지원하지 않는 제품에 대해 작성되었습니다. 따라서 이 문서는 “있는 그대로" 제공되며 더 이상 업데이트되지 않습니다.

요약

ODBC 다섯 트랜잭션 격리 수준을 제공합니다. 트랜잭션 격리 수준 및 ODBC 및 ANSI SQL2 격리 수준 간의 관계의 개념에 설명 합니다.

자세한 내용

트랜잭션 격리 수준이 있는 여러 인터리브 트랜잭션을 다중 사용자 데이터베이스 시스템에서 서로 방해를 제한할지 정도를 나타냅니다. 원칙적으로 "직렬화" 거래가 있을 하고자 하나-즉, 모든 동시 트랜잭션이 집합 인터리빙된 실행 이러한 같은 트랜잭션의 일부 (지정 되지 않은) 직렬 실행 같은 효과 생성 합니다. ANSI SQL 2 표준 트랜잭션 순차성 (있는 경우에 허용 위반 의미)와 위반 수 있는 세 가지 특정 방법을 정의 합니다.

  1. 커밋되지 않은 읽기: 트랜잭션 T1 행을 수정합니다. T2 다음 행을 읽습니다. T1-롤백을 수행 하는 이제 T2 절대로 실제로 존재 했던 행 본에 따라서.
  2. 반복 되지 않은 읽기: T1 검색 행. 그런 다음 T2 해당 행을 업데이트 하 고 T1 "같은" 행을 다시 검색. T1 지금 효과적으로 검색 "같은" 행 두 번과 두 개의 서로 다른 값을 볼 수가 있습니다.
  3. 팬텀: T1 특정 검색 조건을 만족 하는 행 집합을 읽습니다. 다음 T2 같은 검색 조건을 만족 하는 하나 이상의 행을 삽입 합니다. T1 읽기 반복, 이전에-"팬텀" 존재 하지 않는 행이 나타납니다.
이러한 세 가지 현상 이라고 P1, P2 및 P3, 각각 합니다. SQL2 다양 한 격리 수준 중 순차성은 이러한 세 가지 위반을 측면에서 정의 됩니다. 와 같습니다.

  1. READ_UNCOMMITTED-P1, P2 및 P3 허용 합니다.
  2. READ_COMMITTED-P2 및 P3 허용 합니다. P 1을 허용 하지 않습니다.
  3. REPEATABLE_READ-P3 인가입니다. P 1과 P2 허용 하지 않습니다.
  4. SERIALIZABLE-P1, P2 및 P3의 허용 하지 않습니다.
ODBC 다섯 가지 격리 수준을 정의: SQL_TXN_READ_UNCOMMITTED, SQL_TXN_READ_COMMITTED, SQL_TXN_REPEATABLE_READ, SQL_TXN_SERIALIZABLE, 및 SQL_TXN_VERSIONING. 처음 네 ANSI 격리 수준 1-4 각각 해당. SQL_TXN_VERSIONING는 순차 가능한 트랜잭션을 제공 하지만 동시성에 심각 하지는 않습니다.


트랜잭션 격리 프로토콜 잠금을 통해 수행 됩니다. 다양 한 테이블 또는 두 작성자 같은 시간, 또는 방지 쓰기 작업을 마치면 접근 및 등등에 액세스할 수 없도록 잠겨과 그 요소입니다. 이러한 부작용 중 하나는 동시성을 획기적으로 줄이기 위해입니다. 일반적으로 격리 수준 3 및 4는 동시성을 대폭 줄일 프로토콜 잠금을 설정 하면 달성 됩니다. SQL_TXN_VERSIONING 잠금 비 높이 방법 동시성 수준 3 및 4를 높이기를 참조 합니다. 이 예는 Oracle의 읽기 일관성 격리 수준입니다.


그가 기본적으로 더 낮은 수준의 격리를 제공 하 고 순차 가능한 트랜잭션을 얻기 위해 명시적인 동시성 제어 기능을 제공 하는 많은 데이터베이스 시스템입니다. 예를 들어, Sybase/Microsoft SQL Server 수준 2 (READ_COMMITTED) 기본적으로 잠금을 제공 합니다. 하지만 트랜잭션 내에서는 HOLDLOCK 키워드를 사용 하 여 연속성 보장 됩니다. 마찬가지로, IBM의 DB/2 READ_COMMITTED 및 SERIALIZABLE을 RR (반복 읽기)에 해당 하는 CS (커서 안정성) 라는 두 가지 격리 수준을 제공 합니다. 그러나의 이러한 연속성을 달성 하기 위해 CS 수준에서 작업 하는 사용자를 원하는 수 있는 잠금 테이블 문을 제공 합니다.


구현에서 이러한 차이점으로 인해 ODBC 응용 프로그램 상호 운용성 트랜잭션 격리 수준을 설정 하려면 SQLSetConnectOption를 사용 해야, 사용 하는 대신 다양 한 구현 잠금 수준을 정의 된.
속성

문서 ID: 95022 - 마지막 검토: 2017. 2. 7. - 수정: 1

피드백