스냅샷 격리 작업
SQL Server 2005에는 OLTP(온라인 트랜잭션 처리) 애플리케이션에 대한 동시성을 향상시키기 위한 새로운 "스냅샷" 격리 수준이 도입되었습니다. 이전 버전의 SQL Server에서는 동시성이 일부 애플리케이션에 대해 문제 차단 및 교착 상태를 발생시킬 수 있는 잠금 기능에만 의존했습니다. 스냅샷 격리는 향상된 행 버전 관리 기능을 사용하며 읽기/쓰기 차단 시나리오를 방지하여 성능을 향상시킵니다.
스냅샷 격리 하에 시작된 트랜잭션은 트랜잭션이 시작된 시간을 기준으로 데이터베이스 스냅샷을 읽습니다. 그 결과, 스냅샷 트랜잭션 컨텍스트 내에서 열린 키 집합 동적 및 정적 서버 커서가 직렬화 가능 트랜잭션 내에서 열린 정적 커서처럼 동작합니다. 하지만 스냅샷 격리 수준 하에서 커서를 열면 잠금이 수행되지 않아 서버의 차단을 줄일 수 있습니다.
SQL Server Native Client OLE DB 공급자
SQL Server Native Client OLE DB 공급자는 2005년 SQL Server 도입된 스냅샷 격리를 활용하는 향상된 기능을 제공합니다. 이러한 향상된 기능에는 DATASOURCEINFO 및 DBPROPSET_SESSION 속성 집합의 변경 내용이 포함됩니다.
DBPROPSET_DATASOURCEINFO
DBPROPSET_DATASOURCEINFO 속성 집합은 DBPROP_SUPPORTEDTXNISOLEVELS 속성에 사용되는 DBPROPVAL_TI_SNAPSHOT 값을 추가하여 스냅샷 격리 수준이 지원됨을 나타내도록 변경되었습니다. 이 새로운 값은 데이터베이스에 버전 관리가 설정되어 있는지 여부에 관계없이 스냅샷 격리 수준이 지원됨을 나타냅니다. 다음은 DBPROP_SUPPORTEDTXNISOLEVELS 값의 목록입니다.
속성 ID | Description |
---|---|
DBPROP_SUPPORTEDTXNISOLEVELS | 유형: VT_I4 R/W: 읽기 전용 설명: 지원되는 트랜잭션 격리 수준을 지정하는 비트 마스크입니다. 다음을 0개 이상 조합하여 지정합니다. - DBPROPVAL_TI_CHAOS - DBPROPVAL_TI_READUNCOMMITTED - DBPROPVAL_TI_BROWSE - DBPROPVAL_TI_CURSORSTABILITY - DBPROPVAL_TI_READCOMMITTED - DBPROPVAL_TI_REPEATABLEREAD - DBPROPVAL_TI_SERIALIZABLE - DBPROPVAL_TI_ISOLATED - DBPROPVAL_TI_SNAPSHOT |
DBPROPSET_SESSION
DBPROPSET_SESSION 속성 집합은 DBPROP_SESS_AUTOCOMMITISOLEVELS 속성에 사용되는 DBPROPVAL_TI_SNAPSHOT 값을 추가하여 스냅샷 격리 수준이 지원됨을 나타내도록 변경되었습니다. 이 새로운 값은 데이터베이스에 버전 관리가 설정되어 있는지 여부에 관계없이 스냅샷 격리 수준이 지원됨을 나타냅니다. 다음은 DBPROP_SESS_AUTOCOMMITISOLEVELS 값의 목록입니다.
속성 ID | Description |
---|---|
DBPROP_SESS_AUTOCOMMITISOLEVELS | 유형: VT_I4 R/W: 읽기 전용 설명: 자동 커밋 모드에서 트랜잭션 격리 수준을 나타내는 비트 마스크를 지정합니다. 이 비트 마스크에 설정할 수 있는 값은 DBPROP_SUPPORTEDTXNISOLEVELS에 설정할 수 있는 값과 같습니다. |
참고
2005년 SQL Server 이전 버전의 SQL Server 사용할 때 DBPROPVAL_TI_SNAPSHOT 설정된 경우 DB_S_ERRORSOCCURRED 또는 DB_E_ERRORSOCCURRED 오류가 발생합니다.
스냅샷 격리가 트랜잭션에서 지원되는 방법은 로컬 트랜잭션 지원을 참조하세요.
SQL Server Native Client ODBC 드라이버
SQL Server Native Client ODBC 드라이버는 SQLSetConnectAttr 및 SQLGetInfo 함수에 대한 향상된 기능을 통해 스냅샷 격리를 지원합니다.
SQLSetConnectAttr
SQLSetConnectAttr 함수는 이제 SQL_COPT_SS_TXN_ISOLATION 특성의 사용을 지원합니다. SQL_COPT_SS_TXN_ISOLATION을 SQL_TXN_SS_SNAPSHOT으로 설정하면 스냅샷 격리 수준에서 트랜잭션이 실행됩니다.
SQLGetInfo
이제 SQLGetInfo 함수는 SQL_TXN_ISOLATION_OPTION 정보 형식에 추가된 SQL_TXN_SS_SNAPSHOT 값을 지원합니다.
트랜잭션에서 스냅샷 격리가 지원되는 방법에 대한 자세한 내용은 커서 트랜잭션 격리 수준을 참조하세요.