드라이버 관리자 커넥트온 풀링
커넥트온 풀링을 사용하면 애플리케이션이 각 용도에 대해 다시 설정할 필요가 없는 연결 풀의 연결을 사용할 수 있습니다. 연결이 만들어지고 풀에 배치되면 애플리케이션은 전체 연결 프로세스를 수행하지 않고도 해당 연결을 다시 사용할 수 있습니다.
풀된 연결을 사용하면 애플리케이션이 연결에 관련된 오버헤드를 줄일 수 있으므로 성능이 크게 향상될 수 있습니다. 네트워크를 통해 연결하는 중간 계층 애플리케이션 또는 인터넷 애플리케이션과 같이 반복적으로 연결 및 연결을 끊는 애플리케이션에 특히 중요할 수 있습니다.
성능 향상 외에도 연결 풀링 아키텍처를 사용하면 단일 프로세스에서 여러 구성 요소에서 환경 및 관련 연결을 사용할 수 있습니다. 즉, 동일한 프로세스의 독립 실행형 구성 요소는 서로를 인식하지 않고 서로 상호 작용할 수 있습니다. 연결 풀의 연결은 여러 구성 요소에서 반복적으로 사용할 수 있습니다.
참고 항목
ODBC 2를 나타내는 ODBC 애플리케이션에서 커넥트ion 풀링을 사용할 수 있습니다.애플리케이션이 SQLSetEnvAttr를 호출할 수 있는 한 x 동작입니다. 연결 풀링을 사용하는 경우 애플리케이션은 데이터베이스 또는 데이터베이스의 컨텍스트를 변경하는 SQL 문을 실행해서는 안 됩니다(예: 데이터 원본에서 사용하는 카탈로그를 변경하는 데이터베이스 이름> 변경<).
ODBC 드라이버는 완전히 스레드로부터 안전해야 하며 연결에 연결 풀링을 지원하기 위한 스레드 선호도가 없어야 합니다. 즉, 드라이버는 언제든지 스레드에 대한 호출을 처리할 수 있으며 한 스레드에서 연결하고, 다른 스레드에서 연결을 사용하고, 세 번째 스레드에서 연결을 끊을 수 있습니다.
연결 풀은 드라이버 관리자가 기본. 애플리케이션이 호출 할 때 풀에서 커넥트이 그려집니다.SQL커넥트 또는 SQLDriver커넥트 애플리케이션에서 SQLDisconnect를 호출하면 풀로 반환됩니다. 요청된 리소스 할당에 따라 풀의 크기가 동적으로 증가합니다. 비활성 시간 제한에 따라 축소됩니다. 연결이 일정 기간 동안 비활성 상태이면(연결에서 사용되지 않음) 풀에서 제거됩니다. 풀의 크기는 서버의 메모리 제약 조건 및 제한에 의해서만 제한됩니다.
드라이버 관리자는 SQL커넥트 또는 SQLDriver커넥트 전달된 인수와 연결이 할당된 후 설정된 연결 특성에 따라 풀의 특정 연결을 사용할지 여부를 결정합니다.
드라이버 관리자가 연결을 풀링하는 경우 연결을 전달하기 전에 연결이 여전히 작동하는지 확인할 수 있어야 합니다. 그렇지 않으면 드라이버 관리자는 일시적인 네트워크 오류가 발생할 때마다 애플리케이션에 배달 못한 연결을 계속 전달합니다. ODBC 3*.x*: SQL_ATTR_CONNECTION_DEAD 새 연결 특성이 정의되었습니다. SQL_CD_TRUE 또는 SQL_CD_FALSE 반환하는 읽기 전용 연결 특성입니다. SQL_CD_TRUE 값은 연결이 끊어졌으며 SQL_CD_FALSE 값은 연결이 여전히 활성 상태임을 의미합니다. (이전 버전의 ODBC를 준수하는 드라이버도 이 특성을 지원할 수 있습니다.)
드라이버는 이 옵션을 효율적으로 구현해야 합니다. 그렇지 않으면 연결 풀링 성능이 저하됩니다. 특히 이 연결 특성을 가져오는 호출은 서버로의 왕복을 유발해서는 안 됩니다. 대신 드라이버는 마지막으로 알려진 연결 상태를 반환해야 합니다. 서버에 대한 마지막 이동이 실패하면 연결이 중지되고 마지막 이동이 성공하면 종료되지 않습니다.
설명
연결이 끊긴 경우(SQL_ATTR_CONNECTION_DEAD 통해 보고됨) ODBC 드라이버 관리자는 드라이버에서 SQLDisconnect를 호출하여 해당 연결을 삭제합니다. 새 연결 요청은 풀에서 사용 가능한 연결을 찾을 수 없습니다. 결국 드라이버 관리자는 풀이 비어 있다고 가정하여 새 연결을 만들 수 있습니다.
연결 풀을 사용하기 위해 애플리케이션은 다음 단계를 수행합니다.
SQLSetEnvAttr를 호출하여 SQL_ATTR_CONNECTION_POOLING 환경 특성을 SQL_CP_ONE_PER_DRIVER 또는 SQL_CP_ONE_PER_HENV 설정하여 연결 풀링을 사용하도록 설정합니다. 애플리케이션에서 연결 풀링을 사용하도록 설정할 공유 환경을 할당하기 전에 이 호출을 수행해야 합니다. SQLSetEnvAttr 호출의 환경 핸들을 null로 설정해야 하므로 프로세스 수준 특성을 SQL_ATTR_CONNECTION_POOLING. 특성이 SQL_CP_ONE_PER_DRIVER 설정되면 각 드라이버에 대해 단일 연결 풀이 지원됩니다. 애플리케이션이 많은 드라이버와 몇 가지 환경에서 작동하는 경우 더 적은 비교가 필요할 수 있으므로 더 효율적일 수 있습니다. SQL_CP_ONE_PER_HENV 설정하면 각 환경에 대해 단일 연결 풀이 지원됩니다. 애플리케이션이 많은 환경과 몇 가지 드라이버에서 작동하는 경우 더 적은 비교가 필요할 수 있으므로 더 효율적일 수 있습니다. SQL_ATTR_CONNECTION_POOLING SQL_CP_OFF 설정하여 커넥트온 풀링을 사용할 수 없습니다.
handleType 인수를 SQL_HANDLE_ENV 설정하여 SQLAllocHandle 을 호출하여 환경을 할당합니다. 연결 풀링을 사용하도록 설정했으므로 이 호출에 의해 할당된 환경은 암시적 공유 환경이 됩니다. 그러나 이 환경에서는 handleType이 SQL_HANDLE_DBC SQLAllocHandle 이 호출될 때까지 사용할 환경이 결정되지 않습니다.
inputHandle이 SQL_HANDLE_DBC 설정되고 InputHandle 이 연결 풀링에 할당된 환경 핸들로 설정된 SQLAllocHandle을 호출하여 연결을 할당합니다. 드라이버 관리자는 애플리케이션에서 설정한 환경 특성과 일치하는 기존 환경을 찾으려고 시도합니다. 이러한 환경이 없으면 참조 횟수(드라이버 관리자가 기본)가 1인 환경이 만들어집니다. 일치하는 공유 환경이 발견되면 환경이 애플리케이션에 반환되고 해당 참조 수가 증가합니다. (사용할 실제 연결은 드라이버 관리자가 다음까지 결정되지 않음)SQL커넥트 또는 SQLDriver커넥트 호출됩니다.)
SQL커넥트 또는 SQLDriver커넥트를 호출하여 연결합니다. 드라이버 관리자는 SQL 호출커넥트(또는 SQLDriver 호출의 연결 키워드(keyword)커넥트) 및 연결 할당 후 설정된 연결 특성을 사용하여 풀에서 사용해야 하는 연결을 결정합니다.
참고 항목
요청된 연결이 풀된 연결과 일치하는 방법은 SQL_ATTR_CP_MATCH 환경 특성에 의해 결정됩니다. 자세한 내용은 SQLSetEnvAttr를 참조 하세요.
연결 풀링을 사용하는 ODBC 애플리케이션은 애플리케이션 초기화 중에 CoInitializeEx를 호출하고 애플리케이션이 닫히면 CoUninitialize를 호출해야 합니다.
연결이 완료되면 SQLDisconnect를 호출합니다. 연결이 연결 풀로 반환되고 다시 사용할 수 있게 됩니다.
자세한 내용은 Microsoft 데이터 액세스 구성 요소의 풀링을 참조 하세요.
커넥트ion 풀링 고려 사항
ODBC API가 아닌 SQL 명령을 사용하여 다음 작업을 수행하면 연결 상태에 영향을 줄 수 있으며 연결 풀링이 활성 상태일 때 예기치 않은 문제가 발생할 수 있습니다.
연결을 열고 기본 데이터베이스를 변경합니다.
SET 문을 사용하여 구성 가능한 옵션(SET ROWCOUNT, ANSI_NULL, IMPLICIT_TRANSACTIONS, SHOWPLAN, STATISTICS, TEXTSIZE 및 DATEFORMAT 포함)을 변경합니다.
임시 테이블 및 저장 프로시저 만들기
이러한 작업이 ODBC API 외부에서 수행되는 경우 연결을 사용하는 다음 사용자는 이전 설정, 테이블 또는 프로시저를 자동으로 상속합니다.
참고 항목
특정 설정이 연결 상태에 있을 것으로 기대하지 마세요. 항상 애플리케이션에서 연결 상태를 설정하고 애플리케이션에서 사용되지 않는 연결 풀링 설정을 제거해야 합니다.
드라이버 인식 연결 풀링
Windows 8부터 ODBC 드라이버는 풀의 연결을 보다 효율적으로 사용할 수 있습니다. 자세한 내용은 드라이버 인식 커넥트ion 풀링을 참조하세요.
참고 항목
데이터 원본 또는 드라이버에 커넥트
ODBC 드라이버 개발
Microsoft 데이터 액세스 구성 요소의 풀링