java - 使用JDBC的连接池选项:DBCP与C3P0
什么是可用于Java / JDBC的最佳连接池库?
我正在考虑2个主要候选人(免费/开源):
Apache DBCP - [http://commons.apache.org/dbcp/]
C3P0 - [http://sourceforge.net/projects/c3p0]
我在博客和其他论坛上阅读了很多关于它们的内容,但无法做出决定。
这两个是否有任何相关的替代方案?
15个解决方案
174 votes
DBCP已过期而非生产等级。 一段时间后,我们对两者进行了内部分析,创建了一个测试夹具,对两者产生负载和并发性,以评估它们在现实生活条件下的适用性。
DBCP始终如一地在我们的测试应用程序中生成异常,并努力达到C3P0能够处理的性能水平,没有任何例外。
C3P0还可以在恢复时稳健地处理数据库断开连接和透明重新连接,而如果链接从其下方取出,则DBCP永远不会恢复连接。 更糟糕的是DBCP将Connection对象返回到底层传输已经破坏的应用程序。
从那时起,我们在4个主要的重载消费者网络应用程序中使用了C3P0,并且从未回头。
更新:事实证明,经过多年坐在架子上,Apache Commons民众已经让DBCP摆脱了休眠状态,现在又是一个积极开发的项目。 因此我原来的帖子可能已经过时了。
话虽如此,我还没有体验过这个新升级的库的性能,也没有听说它在任何最近的应用程序框架中都是事实上的。
j pimmel answered 2019-02-11T04:22:37Z
168 votes
我邀请您试用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,但新所有者保留了旧