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

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

Apache DBCP - http://commons.apache.org/dbcp/ C3P0 - http://sourceforge.net/projects/c3p0

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

有什么相关的替代方案吗?


当前回答

不幸的是,它们都过时了。DBCP最近更新了一些,另外两个已经有2-3年的历史了,有很多突出的bug。

其他回答

如果配置正确,Dbcp可以用于生产。

例如,它用于一个每天有350000访问者和200个连接池的商业网站。

只要配置正确,它就能很好地处理超时。

版本2正在进行中,它有一个背景,这使得它可靠,因为许多 生产问题已得到解决。

我们使用它作为我们的批处理服务器解决方案,它已经运行了数百个批次,在数据库中工作数百万行。

由tomcat jdbc池运行的性能测试表明,它的性能优于cp30。

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

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

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

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

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

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

以下是一些文章,它们表明DBCP的性能明显高于C3P0或Proxool。另外,根据我自己的经验,c3p0确实有一些不错的特性,比如预处理语句池,并且比DBCP更可配置,但是DBCP在我使用过的任何环境中都要快得多。

dbcp和c3p0的区别?绝对没有!(酒井的一个开发者博客) http://blogs.nyu.edu/blogs/nrm216/sakaidelic/2007/12/difference_between_dbcp_and_c3.html

请在博客文章的评论中查看对JavaTech文章“连接池决战”的点赞。

当连接超时时,我遇到了DBCP问题,所以我尝试了c3p0。我本打算将其发布到生产环境中,但随后开始了性能测试。我发现c3p0表现很糟糕。我根本无法将其配置得很好。我发现它比DBCP慢两倍。

然后我尝试了Tomcat连接池。

这是c3p0的两倍快,并修复了我在DBCP中遇到的其他问题。我花了很多时间调查和测试这3个池子。如果要部署到Tomcat,我的建议是使用新的Tomcat JDBC池。

一个很好的易于使用的替代方法是DBPool。

“一个基于java的数据库连接池实用程序,支持基于时间的过期、语句缓存、连接验证以及使用池管理器轻松配置。”

http://www.snaq.net/java/DBPool/