1

여러 스레드를 사용하여 다른 테이블에 삽입 레코드를 삽입하려고합니다. 또한 효율성 향상을 위해 레코드 삽입을 위해 일괄 처리를 사용하고 있습니다.멀티 스레드 프로그램에서 connection-pooling을 사용해야합니까?

참고 : 삽입 할 레코드 수는 수백만 개입니다.

이 멀티 스레드 환경에서 연결 풀링을 사용해야합니까? 내 질문은 입니까?

내 우려 :

각 스레드는 데이터베이스 작업을 수행하는 것은 매우 언젠가 실행거야. 따라서 연결 풀의 크기가 2이고 스레드 수가 4 인 경우 주어진 순간에 2 개의 스레드 만 실행됩니다. 결과적으로, 다른 두 개의 쓰레드는 오랜 시간 동안 연결을 유지하는 데 이상적입니다. 왜냐하면 백만 개의 레코드에 대한 db 작업은 시간이 많이 걸리기 때문입니다. 게다가 이러한 연결 풀링은 다중 스레드를 사용하는 목적을 방해합니다.

+0

이렇게 수집 풀이해야 스레드 수와 같은 크기 여야합니다. –

+0

그러면 연결 풀을 어떻게 사용할 것입니까? 연결 풀을 사용하지 않고 n 개의 연결을 만들 수 있으므로 – Touchstone

+0

연결을 설정하는 데 시간이 오래 걸립니다. 한 번 해보는 것이 더 좋습니다. –

답변

1

배치에서 연결 풀을 사용하는 것이 편리합니다. 그것은 당신이 연결이

체크 아웃 일반 안녕, '자바의 예 등이 열려있는 경우이를 확인 종료하는 것을 잊지 경우 열려있는 연결, 포기 시간 가까이 연결의 양을 제한하는 데 도움이됩니다 here

+0

정확합니다. 당신이 그것을 필요로하지 않거나 정규 OLTP와 같은 이점을 얻지는 않을지라도, 확실히 그것에 아무런 해가 없습니다. – Kayaman

+0

연결을 신중하게 처리하는 경우 연결 풀 (내 유스 케이스에 연결)을 사용할 필요가 없습니다. 내가 맞습니까? Btw 나는 commons-dbcp를 시도했다. – Touchstone

+0

나는 적절한 연결 풀 및 구성으로 동일한 작업을 수행 할 수 있다고 생각합니다. 예를 들어 귀하의 경우 maxActive는 2이고 maxWait 속성은 스레드 num을 만듭니다. 3은 지정된 기간 동안 연결이 가능할 때까지 대기하지만, 사용하지 않는 것이 복잡 할 경우 다시 편리하게 풀을 사용합니다. – PbxMan