IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

Java数据库连接池小结

叶德华的博客 2016-02-06 23:51:04 累计浏览 2,901 次
本机暂存

   数据库连接池是为了解决数据库对象的共享出错问题,实际就是建立一个缓冲池,预先在缓冲池中放入一定数量的数据库连接,当需要建立数据库连接时,只需要从连接池中取出一个,而不是再次新建一个数据库连接,使用完毕以后再将数据库连接放入连接池。

   现在常用的开源数据库连接池有c3p0、dbcp、proxool三种,其中:spring框架推荐使用dbcp,hibernate框架推荐使用c3p0和proxool。

   1、dbcp

   dbcp数据库连接池是Apache上的一个Java连接池项目,也是tomcat使用的连接池组件。单独使用dbcp需要3个包:common-dbcp.jar、common-pool.jar,common-collections.jar由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。dbcp没有自动的去回收空闲连接的功能。

   2、c3p0

   c3p0是一个开源的JDBC连接池,它实现了数据源的JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。c3p0是异步操作的,缓慢的JDBC操作通过帮助进程完成。扩展这些功能可以有效的提升性能。目前使用它的开源项目有hibernate、spring等,c3p0有自动回收空闲连接功能。

   3、proxool

   proxool是一种Java数据库连接池技术,是sourceforge下的一个开源项目,这个项目提供一个健壮、易用的连接池,最为关键的是这个连接池提供监控的功能,方便易用,便于发现连接泄漏的情况。

   对比

   (1)相同时间内同等量的线程数和循环次数下:通过对三个连接池的三个标志性性能测试参数(Average、median、90%Line)进行比较发现:性能 dbcp<=c3p0<=proxool。

   (2)不同情况下的同一数据库连接池测试:通过观察Average、median、90%Line三个参数发现三个连接池的稳定性(三种连接池的三个测试参数的变化情况)依次:稳定性 dbcp>=c3p0>=proxool。

   结论

   通过对三种数据库连接池的性能测试发现,proxool和c3p0能够更好的支持高并发,但是在稳定性方面略逊于dpcp。

同分类推荐文章

  1. 等了十年的 Go 链式管道,终于来了:seq 让你像写 Scala 一样写 Go (2026-06-25 18:38:18)
  2. Go 实验特性详解 (2026-06-21 10:05:27)
  3. amd64 微架构级别对 Go 程序性能提升多少? (2026-06-21 09:38:49)

查看更多 后端 文章 →

建议继续学习

  1. SmartSprites - 命令行形式的CSS Sprites生成器 (累计阅读 123,894)
  2. Java开发岗位面试题归类汇总 (累计阅读 22,156)
  3. android 开发入门 (累计阅读 19,527)
  4. 我的PHP,Python和Ruby之路 (累计阅读 13,147)
  5. HashMap解决hash冲突的方法 (累计阅读 12,654)
  6. 我对技术方向的一些反思 (累计阅读 11,320)
  7. 一个大二学生有关如何成为一名软件工程师的疑问及答复 (累计阅读 9,181)
  8. Java程序员应该知道的10个eclipse调试技巧 (累计阅读 8,012)
  9. 数据分析中常用的数据模型 (累计阅读 7,950)
  10. TT的作者出新作品鸟:kyoto tycoon (累计阅读 7,954)