Oracle通用连接池(UCP)有多好

And*_*min 26 java connection-pooling jdbc c3p0 apache-commons-dbcp

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

MRa*_*ser 34

我评估了UCP 11.2.0.1作为我们传统连接池的替代品,我不推荐它:

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


更新1(2014年4月):
虽然稍微偏离主题:由于我的评估,我决定使用新的 tomcat jdbc-pool - 并且它在几个生产系统中一年以来几乎完美地工作.它设计精良,定期更新,可扩展,并且apache tomcat团队在回答问题/修复问题方面做得很好.

更新2(2016年7月):
我现在强烈推荐 HikariCP,我目前支持所有其他连接池.
它的架构,注重正确性和性能真是太棒了.

  • 您能否发布与Oracle提出的问题的链接? (4认同)

mur*_*ali -5

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

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