2013-07-29 3 views
1

Pooling이 vb.net과 실제로 작동하는지 여부는 의심 스럽습니다. 아래의 쿼리를 사용하여 다른 PC에서 데이터베이스에 대한 연결을 확인합니다.풀링 : 데이터베이스에 둘 이상의 연결

출력에서는 PC에서 동일한 데이터베이스로 한 개 이상의 연결을 보았습니다.

그래서 내가 내 vb.net 응용 프로그램에서 연결을 한 번만 열어서 같은 풀에서 연결이 사용되므로 PC에서 데이터베이스에 단 하나의 연결 만있을 것이라고 생각했다. .

UPDATE 나는 SQL 서버 데이터베이스에 대한 연결을 활용하는 vb.net 응용 프로그램이 있습니다.

  1. 같은 프로그램의 여러 인스턴스를 열면 동일한 풀이나 다른 풀에서 연결이 생성됩니까?

  2. 다른 exe를 열었지만 동일한 데이터베이스에 대한 연결을 모두 열면 같은 연결 풀이 둘 다 사용됩니다?

SQL 서버에서 쿼리를 실행하면 동일한 PC의 동일한 DB에 많은 연결이 표시됩니다.

+0

하나의 연결이있을 수 있지만 SQL Server에서 생성 된 여러 SPID가있을 수 있습니다. SQL Server에서 다중 연결로 생성 된 여러 스레드를 언급하지 않았습니까? 우리가 당신을 더 잘 도울 수 있도록 스크린 샷을 게시 할 수 있습니까? – Kin

+0

@Kin 나는 당신을 얻지 못했습니다. 어떤 스크린 샷을 말하는 겁니까? –

+0

당신은'출력에서 나는 하나의 PC에서 동일한 데이터베이스로의 연결을 보았습니다 .'라고 말한 것을 설명 할 수 있습니까? – Kin

답변

1

풀링은 단일 연결을 보장하지 않습니다. 동시 활성 (논리적) 연결마다 하나의 물리적 연결이 필요합니다. 따라서 각각 연결 인스턴스를 사용하는 10 개의 스레드가 있거나 어떤 이유로 단일 스레드에서 10 개의 연결을 열면 10 개의 물리적 연결이 표시됩니다.

단일 세션이 단일 연결에 할당됩니다. 각 연결은 동시에 최대 하나의 세션을 가질 수 있습니다.

+0

내 업데이트 된 질문 –

+0

을 참조하십시오. 서로 다른 프로세스가 연결을 공유하지 않습니다. 그것이 "exe"와 같은지 여부는이 문제와 관련이 없습니다. OS는 프로세스에만 관심이 있습니다. – usr

+0

그런 다음 동일한 데이터베이스에 대한 연결이 동일한 스레드에서 두 번 이상 열리는 경우 풀링이 유용할까요? 별도의 스레드를 열고 동일한 데이터베이스에 대한 연결을 열면 (즉, 풀링이 여러 스레드에서 사용되는 경우) 어떻게됩니까? –