스냅숏 격리 작업
SQL Server 2005에서는 OLTP(온라인 트랜잭션 처리) 응용 프로그램의 동시성을 향상시키기 위한 새로운 "스냅숏" 격리 수준이 도입되었습니다. 이전 버전의 SQL Server에서는 동시성이 일부 응용 프로그램에 대해 문제 차단 및 교착 상태를 발생시킬 수 있는 잠금 기능에만 의존했습니다. 스냅숏 격리는 향상된 행 버전 관리 기능을 사용하며 읽기/쓰기 차단 시나리오를 방지하여 성능을 향상시킵니다.
스냅숏 격리 하에 시작된 트랜잭션은 트랜잭션이 시작된 시간을 기준으로 데이터베이스 스냅숏을 읽습니다. 그 결과, 스냅숏 트랜잭션 컨텍스트 내에서 열린 키 집합 동적 및 정적 서버 커서가 직렬화 가능 트랜잭션 내에서 열린 정적 커서처럼 동작합니다. 하지만 스냅숏 격리 수준 하에서 커서를 열면 잠금이 수행되지 않아 서버의 차단을 줄일 수 있습니다.
SQL Server Native Client OLE DB 공급자
SQL Server Native Client OLE DB 공급자에는 SQL Server 2005에서 도입된 스냅숏 격리를 이용하는 향상된 기능이 있습니다. 이러한 향상된 기능에는 DATASOURCEINFO 및 DBPROPSET_SESSION 속성 집합의 변경 내용이 포함됩니다.
DBPROPSET_DATASOURCEINFO
DBPROPSET_DATASOURCEINFO 속성 집합은 DBPROP_SUPPORTEDTXNISOLEVELS 속성에 사용되는 DBPROPVAL_TI_SNAPSHOT 값을 추가하여 스냅숏 격리가 지원됨을 나타내도록 변경되었습니다. 이 새로운 값은 데이터베이스에 버전 관리가 설정되어 있는지 여부에 관계없이 스냅숏 격리가 지원됨을 나타냅니다. 다음은 DBPROP_SUPPORTEDTXNISOLEVELS 값의 목록입니다.
속성 ID |
설명 |
---|---|
DBPROP_SUPPORTEDTXNISOLEVELS |
유형: VT_I4 R/W: 읽기 전용 설명: 지원되는 트랜잭션 격리 수준을 지정하는 비트 마스크입니다. 다음을 0개 이상 조합하여 지정합니다.
|
DBPROPSET_SESSION
DBPROPSET_SESSION 속성 집합은 DBPROP_SESS_AUTOCOMMITISOLEVELS 속성에 사용되는 DBPROPVAL_TI_SNAPSHOT 값을 추가하여 스냅숏 격리가 지원됨을 나타내도록 변경되었습니다. 이 새로운 값은 데이터베이스에 버전 관리가 설정되어 있는지 여부에 관계없이 스냅숏 격리가 지원됨을 나타냅니다. 다음은 DBPROP_SESS_AUTOCOMMITISOLEVELS 값의 목록입니다.
속성 ID |
설명 |
---|---|
DBPROP_SESS_AUTOCOMMITISOLEVELS |
유형: VT_I4 R/W: 읽기 전용 설명: 자동 커밋 모드에서 트랜잭션 격리 수준을 나타내는 비트 마스크를 지정합니다. 이 비트 마스크에 설정할 수 있는 값은 DBPROP_SUPPORTEDTXNISOLEVELS에 설정할 수 있는 값과 같습니다. |
[!참고]
SQL Server 2005보다 이전 버전의 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 값을 지원합니다.
스냅숏 격리가 트랜잭션에서 지원되는 방법은 커서 트랜잭션 격리 수준을 참조하십시오.