【问题标题】:Connection pool limit for db2 (AS400) access using ADO.NET使用 ADO.NET 访问 db2 (AS400) 的连接池限制
【发布时间】:2016-10-27 15:39:58
【问题描述】:

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

我们的问题是我们必须进行大规模迁移,并且迁移工作需要对数据库进行相当多的查询。我们的迁移可以拆分为多个并行运行的任务 - 不幸的是,性能增益不是线性的(双倍线程数

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

【问题讨论】:

  • 不清楚为什么您期望数据库性能会随着并发连接数线性增长。如果您的并行任务真正独立,请考虑更改默认连接隔离级别。
  • 看看服务器端,WRKACTJOB JOB(QZDASOINIT) 命令应该会显示为您的请求提供服务的作业。您应该看到多个。你看到什么状态?锁定等待 (LCKW) 表示存在问题。可能是@mustaccio 建议的隔离级别。

标签: c# ado.net db2 ibm-midrange


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-24
    • 1970-01-01
    • 1970-01-01
    • 2012-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-06
    相关资源
    最近更新 更多