繁体   English   中英

使用ADO.NET的db2(AS400)访问的连接池限制

[英]Connection pool limit for db2 (AS400) access using ADO.NET

我们正在使用IBM的ADO.NET实现来访问AS400上的DB2数据库。 有一个Db2Connection对象,它带有一个连接字符串-一切都很标准(那里有很多示例),并且一切正常。

我们的问题是我们必须进行大型迁移,并且迁移工作需要在数据库上进行大量查询。 我们的迁移可以分为几个并行运行的任务-不幸的是,性能提升不是线性的(线程数量加倍<速度加倍)。 我们的测试表明瓶颈是Db2Connection-我们假定它必须与池做一些事情。 我们仅从DB2数据库中读取数据并将数据保存在SQL数据库中,因此我们没有遇到这个问题(减少db2读取但保留sql写入会大大提高速度)。 我们尝试使用池的MinSize / MaxSize值和线程数量,但效果似乎很小-似乎来自并行任务的查询正在串行执行。

所以我的问题是:Db2Connection池的活动连接(开放阅读器)数量是否有上限? 在连接字符串中设置MaxSize没有影响,那么服务器是否有任何限制? 或者还有什么可能会限制我们的查询?

我们无法真正解决问题。 但是,我们的解决方案是首先将整个数据从db2数据库复制到临时sql数据库(使用BulkCopy),然后将数据从那里迁移到“真实的”新sql数据库。 这样,迁移速度从大约12h加快到30min(BulkCopy需要大约5min)。

因为从db2到sql以及现在从sql到sql的迁移基本上是相同的代码和概念,所以我不知道是什么导致了db2的性能损失。 我认为这是IBM工具的实现逻辑中的某些缺陷。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM