【问题标题】:How good is Oracle Universal Connection Pool (UCP)Oracle 通用连接池 (UCP) 有多好
【发布时间】:2011-01-26 06:43:27
【问题描述】:

有人有在实际生产负载下使用 Oracle UCP 的经验吗? 它是否能很好地处理数据库重新连接? 是否存在多线程问题? 有人将它与 C3P0 或 Apache DBCP 进行比较吗?

【问题讨论】:

  • 我很难相信 Oracle 的软件将无法处理繁重的负载并且会出现问题。如果是这种情况,他们只会购买完成工作所需的东西。他们承受不起负面新闻,因为它会给不满的客户带来负面影响。

标签: java jdbc connection-pooling c3p0 apache-commons-dbcp


【解决方案1】:

我将 UCP 11.2.0.1 评估为我们旧版连接池的替代品我不能推荐它

  • 不完全支持 jdk 6/ojdbc6.jar。例如,语句缓存和 jmx 支持的使用不适用于 java 6 并引发异常。
  • 没有内部语句缓存 - 它依赖于 jdbc 驱动程序的语句缓存 (setPoolable())
  • 我将这两个问题都提交给了 oracle,他们确认了并且可能会在 oracle 12.0 发布时修复它。但即使这样也不确定。
  • 发布太少(3 年内发布 2 个),社区支持太少。
  • 非开源
  • 几乎不可扩展。只有几个回调,界面设计很糟糕。
    示例:您希望在连接超过其 TTL 时收到通知?准备包装数据源和大量使用内部/专有 UCP API。官方文档(最后一次更新:2008 年)对如何实现这一点保持沉默。
  • 胖设计(几乎是 0.5 MB 的 jar) - 许多类具有相似的名称/功能(例如,PoolDataSourceConnectionPool - 两者相关但调用方式不同,并提供略有不同的功能.)
  • java.util.logging 仅限


更新 1(2014 年 4 月)
虽然有点离题:根据我的评估,我决定使用新的tomcat jdbc-pool - 一年以来它在多个生产系统中几乎完美地工作。它设计得非常好,定期更新,可扩展,apache tomcat 团队做了一个good job in responding to questions/fixing issues

更新 2(2016 年 7 月)
我现在可以强烈推荐HikariCP,我目前更喜欢所有其他连接池。
它的架构、对正确性和性能的关注令人惊叹。

【讨论】:

  • 能否请您发布指向 Oracle 提出的问题的链接?
【解决方案2】:

我在一个每秒大约 10 个事务(平均)和每秒 360 个事务峰值的系统中使用了 UCP,目前还没有问题。 (数字是每个应用服务器有 8 个服务器)

但是,您从 UCP 获得的主要好处是当您使用 Oracle RAC 和 TAF/FAN functionality, UCP with Dataguard 时,或者如果您在 应用服务器之外运行某些东西。

【讨论】:

    【解决方案3】:

    我已经描述了我在 UCP 中观察到的与隐式连接缓存相比的性能/可扩展性问题:https://stackoverflow.com/a/27512252/676877

    【讨论】:

      【解决方案4】:

      我见过多个客户在生产中使用 UCP。我没有看到你关心的问题。它在负载下表现得非常好。并且可以处理重新连接。重新连接策略是可配置的。它也很好地支持RAC。

      但使用商业连接池的真正好处是有人对您遇到的任何问题负责。您会惊讶于有多少人尝试开发和维护自己的连接池。

      【讨论】:

        【解决方案5】:

        我刚刚在基于 Eclipse Link 的应用程序中尝试了 UCP,我遇到了 ORA-0100:每次都超过最大打开游标。我已将参数 MaxStatements 设置为 10,但这没有效果。我检查了堆,有数百个 T4CPreparedStatement 对象存活但不到 10 个包装语句。所以我无法控制的地方有一个巨大的语句缓存。

        Tomcat jdbc 池就像一个魅力。

        【讨论】:

        • 我们遇到了同样的问题。我们使用旧的 oracle 池的应用程序运行良好,但是当我们切换到 UCP 时,我们得到 ORA-0100。你设法解决了这个问题吗?
        • 我放弃了 UCP。我正在使用 Tomcat jdbc 连接池。
        【解决方案6】:

        通过使用连接池(IBM RAD)到 oracle,我得到了更快的结果。与普通编程概念相比。在连接池属性中,默认情况下最大连接数为 10,理想的超时时间是 180 秒。

        这里我们可以设置用户一次访问的最大用户数....

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-09-01
          • 2016-12-10
          • 1970-01-01
          • 2017-06-04
          • 2019-03-06
          • 2015-06-15
          • 1970-01-01
          • 2017-05-28
          相关资源
          最近更新 更多