Java/JDBC可用的最佳连接池库是什么?
我正在考虑两个主要的候选(免费/开源):
Apache DBCP - http://commons.apache.org/dbcp/ C3P0 - http://sourceforge.net/projects/c3p0
我在博客和其他论坛上读了很多关于他们的文章,但无法做出决定。
有什么相关的替代方案吗?
Java/JDBC可用的最佳连接池库是什么?
我正在考虑两个主要的候选(免费/开源):
Apache DBCP - http://commons.apache.org/dbcp/ C3P0 - http://sourceforge.net/projects/c3p0
我在博客和其他论坛上读了很多关于他们的文章,但无法做出决定。
有什么相关的替代方案吗?
当前回答
我们遇到了需要引入连接池的情况,我们面前有4个选项。
DBCP2 C3P0 Tomcat JDBC HikariCP
我们根据我们的标准进行了一些测试和比较,决定去HikariCP。 阅读这篇文章,它解释了为什么我们选择HikariCP。
其他回答
一个很好的易于使用的替代方法是DBPool。
“一个基于java的数据库连接池实用程序,支持基于时间的过期、语句缓存、连接验证以及使用池管理器轻松配置。”
http://www.snaq.net/java/DBPool/
我刚在DBCP上浪费了一天半时间。尽管我使用的是最新的DBCP版本,但我遇到了与j pimmel完全相同的问题。我完全不推荐DBCP,特别是它在DB消失时将连接从池中抛出,当DB返回时无法重新连接,并且无法动态地将连接对象添加回池中(它永远挂在JDBCconnect I/O套接字读取后)。
我现在切换到C3P0。我在以前的项目中使用过它,它的工作和表现就像一个魅力。
如果配置正确,Dbcp可以用于生产。
例如,它用于一个每天有350000访问者和200个连接池的商业网站。
只要配置正确,它就能很好地处理超时。
版本2正在进行中,它有一个背景,这使得它可靠,因为许多 生产问题已得到解决。
我们使用它作为我们的批处理服务器解决方案,它已经运行了数百个批次,在数据库中工作数百万行。
由tomcat jdbc池运行的性能测试表明,它的性能优于cp30。
我的建议是
hikari >德鲁伊> UCP > c3p0 > DBCP
它是基于我所测试的- 20190202,在我的本地测试环境中(4GB mac/mysql in docker/pool minSize=1, maxSize=8), hikari可以服务1024个线程x 1024次来获得连接,每个线程完成的平均时间是1或2百万秒,而c3p0只能服务256个线程x 1024次,每个线程的平均时间已经是2100万秒。(512个线程失败)。
不幸的是,它们都过时了。DBCP最近更新了一些,另外两个已经有2-3年的历史了,有很多突出的bug。