2014-06-24 2 views
0

이전에, 나는 내 자신의 사용자 정의 ConnectionPool 클래스를했다 ,,,하지만 난 대신 .. 단순히 내 연결 문자열에 포함하여 연결 풀링 기능을 사용할 수 있다는 것을 발견 (http://www.codeproject.com/Articles/17768/ADO-NET-Connection-Pooling-at-a-Glance)C++ ADO 연결 풀링

그래서 여기 내 간단한 테스트 코드는 지금까지 있습니다 :

int main(int argc, char** argv) { 

    ::CoInitiazlie(); 

    char* ConnString = "Provider=ASEOLEDB; Data Source=xxx; Min Pool Size=5;"; 

    _ConnectionPtr MyPointer = NULL; 
    MyPointer.CreateInstance(__uuidof(Connection)); 
    MyPointer -> Open(ConnString, "myusername", "mypassword", adConnectUnspecified); 

    //BREAK POINT.... 

    MyPointer -> Close();  

    ::CoUninitialize(); 

} 

그래서 링크의 설명에 따르면이 ,,이 때문에 "최소 풀에 (.. 열고 중단 점에서 수영장 내부 5 개 연결을 유지해야 크기 = 5 "연결 문자열 안의 옵션).

내가 세션 관리자를 열 때

그러나, 만 나는 단지 1 개 연결 열리고 ..

나는 내가 잘못 .. 연결 문자열에 정확히 어떻게 설정 않는 최소 풀 크기가를 만들 무슨 짓을했는지 확실하지 않다 연결 풀 ??

감사

+1

내가 잘못하지 않는 한 연결 풀 크기의 바닥이됩니다. 처음에는 아닙니다. 당신은 12 개 정도의 연계로 그것을 시험해 보았습니까? 그리고 * 5 * 아래에 그것들을지지하고 결과를 수영장에서 결정 했습니까? 그리고 실수로 인증 된 * 활성 * 연결을보고 있습니까? – WhozCraig

+0

@WhozCraig 실제로 십여 가지 정도의 연결 방법을 모르겠습니다. 여러 개의 "_ConnectionPtr"을 만들어야합니까? 또는 같은 포인터에서 여러 개의 "-> Open()"을 호출해야합니까? 죄송합니다. 연결 풀링이 어떻게 작동하는지 조금 혼란 스럽습니다. – user2436815

답변

1

documentation 필요에 따라 연결이 생성 된 것을 나타냅니다 만, Min Pool Size는 가지 치기 후 유지 될 최소 번호 지시듯한 :

최소 풀 크기 (minPoolSize을) :

풀의 최소 연결 수입니다. 열린 커넥션이 유휴 상태이면 풀이이 크기로 프 i됩니다. 기본값은 0입니다.

최소 크기를 지정하지 않으면 EAServer는 최대 크기까지 풀을 채우기 위해 필요에 따라 연결을 엽니 다.

아마 당신은뿐만 아니라 Initial Pool Size을 설정하려면 :

초기 풀 크기 (initialPoolSize)

서버 시작시 할당 된 풀링 된 연결의 초기 수. 설정하지 않으면 기본값은 0입니다.

+0

고마워요. "Provider = ASEOLEDB; Data Source = xxx; initialPoolSize = 5;"를 시도했지만 단 하나의 열린 연결 만 표시합니다. – user2436815

+0

공백이 혼합 된 것처럼 보입니다. 'initialPoolSize' (공백 없음) 또는'Initial Pool Size' (공백 두 개)를 시도하십시오. –

+0

풀이 생성되거나 요청이 실제로 발생할 때까지 연결이 이루어지지 않은 경우 _an 실제 연결이 이루어 졌는지 여부는 분명하지 않습니다. –