使用 JDBC 的连接池选项:DBCP 与 C3P0 [已关闭]

适用于 Java/JDBC 的最佳连接池库是什么?

我正在考虑2个主要候选人(免费/开源):

我在博客和其他论坛上阅读了很多关于它们的信息,但无法做出决定。

这两者之间是否有任何相关的替代方案?


答案 1

DBCP 已过时,不是生产级。不久前,我们对两者进行了内部分析,创建了一个测试夹具,该夹具针对两者生成负载和并发性,以评估它们在现实生活条件下的适用性。

DBCP 始终如一地在我们的测试应用程序中生成异常,并努力达到 C3P0 能够处理且没有任何异常的性能级别。

C3P0 还可以可靠地处理数据库断开连接和恢复时的透明重新连接,而如果从其下方取出链接,DBCP 永远不会恢复连接。更糟糕的是,DBCP 正在将连接对象返回到基础传输已中断的应用程序。

从那时起,我们已经在4个主要的重载消费者Web应用程序中使用了C3P0,并且从未回头。

更新:事实证明,经过多年的搁置,Apache Commons人员已经将DBCP从休眠状态中解脱出来,现在它再次成为一个积极开发的项目。因此,我的原始帖子可能已过时。

话虽如此,我还没有体验过这个新升级的库的性能,也没有听说过它在最近的任何应用程序框架中都是事实上的。


答案 2

我邀请您尝试一下BoneCP - 它是免费的,开源的,并且比可用的替代方案更快(请参阅基准测试部分)。

免责声明:我是作者,所以你可以说我有偏见:-)

更新:截至2010年3月,仍然比新重写的Apache DBCP(“tomcat jdbc”)池快35%左右。请参阅基准测试部分中的动态基准测试链接。

更新#2:(2013年12月)在榜首4年后,现在有一个更快的竞争对手:https://github.com/brettwooldridge/HikariCP

更新#3:(2014年9月)请考虑此时已弃用BoneCP,建议切换到HikariCP

更新 #4:(2015 年 4 月)-- 我不再拥有该域名 jolbox.com


推荐