IBM의 ADO.NET 구현을 사용하여 AS400의 DB2 데이터베이스에 액세스합니다. 연결 문자열을 취하는 Db2Connection 객체가 있습니다. 모든 것이 꽤 표준 적이며 많은 예제가 있습니다. 모두 잘 작동합니다.ADO.NET을 사용하는 db2 (AS400) 액세스에 대한 연결 풀 제한
우리는 큰 마이그레이션을 수행해야하며 마이그레이션 작업은 데이터베이스에 대해 상당히 많은 쿼리를 수행해야한다는 점에서 문제가 있습니다. 우리의 마이그레이션은 병렬로 실행되는 여러 태스크로 나눌 수 있습니다. 불행히도 성능 향상은 선형 적이 지 않습니다 (두 배의 스레드 < 배속). 우리의 테스트는 병목 현상이 Db2Connection이라는 것을 보여줍니다. 우리는 풀링으로 뭔가를해야한다고 가정합니다. 우리는 DB2 데이터베이스에서 데이터를 읽고 SQL 데이터베이스에 데이터를 저장하기 만합니다.이 문제는 발생하지 않습니다 (DB2 읽기는 줄이면서 SQL 쓰기를 유지하면 속도가 크게 향상됩니다). 우리는 풀의 MinSize/MaxSize 값과 스레드의 양을 가지고 놀려고했지만 효과는 미미한 것처럼 보입니다 - 우리의 병렬 작업의 쿼리가 연속적으로 실행되는 것처럼 보입니다.
내 질문 : Db2Connection 풀에 대한 활성 연결 (열린 독자)에 대한 상한선이 있습니까? 연결 문자열에 MaxSize를 설정해도 아무런 영향이 없으므로 서버에 제한이 있습니까? 아니면 우리 쿼리를 조절할 수 있습니까?
데이터베이스 성능이 동시 연결 수와 함께 선형 적으로 증가 할 것으로 예상되는 이유는 분명하지 않습니다. 병렬 작업이 진정으로 독립적 인 경우 기본 연결 격리 수준을 변경하는 것이 좋습니다. – mustaccio
서버 측을 살펴보면'WRKACTJOB JOB (QZDASOINIT)'명령은 요청을 처리하는 작업을 보여줄 것입니다. 여러 개가 표시되어야합니다. 어떤 상태가 보입니까? 잠금 대기 (LCKW)는 문제를 나타냅니다. 아마도 @mustaccio와 같은 격리 수준이 제안되었을 것입니다. – Charles