数据库连接池技术介绍及对比

351 阅读3分钟

最近学到了数据库连接池技术,主要是讲解了p3p0和Druid两种数据库连接池,下面会先介绍数据库连接池,然后另一篇博客会记录连接池基本使用以及使用中的注意事项。虽然上课时老师也讲到了连接池,由于没有做笔记,大多已忘记,如今重新拾起感慨颇多,谨以此博客记录....

数据库连接池

1.概念

度娘给出的解释是:数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。

在我看来数据库连接池就是一个容器(也可以理解为java中的集合),用来存放管理数据库连接的容器(图1所示)。当系统初始化时,创建数据库连接池并申请一部分数据库连接对象,当用户访问数据库时,会从连接池会中获取之前申请的数据库连接对象,当用户访问结束后,会归还数据库连接对象到连接池,从而达到数据库连接对象反复使用,不必进行频繁的申请资源释放资源操作,提高了访问效率。

图1

                                               图1
						

2.连接池好处

1.节约资源。由于数据库连接得到了复用,避免了频繁申请释放资源操作造成系统进程及内存的开销

2.提高用户访问效率。因为数据库连接是直接从数据库连接池中获取,就减少了因申请数据库连接耗费的时间。提高了访问的效率

3.连接池分类

1.dbcp

dbcp可能是使用最多的开源连接池,这个连接池可以设置最大和最小连接,连接等待时间等,基本功能都有。

优缺点:稳定性还是可以,不过速度稍慢,在实践中存在bug,在大并发量的压力下稳定性有所下降,在某些情况下会产生很多空连接不能释放,此外不提供连接池监控。

2.c3p0

c3p0是另外一个开源的连接池,这个连接池可以设置最大和最小连接,连接等待时间等,基本功能都有。

优缺点:连接池的持续运行的稳定性相当不错,在大并发量的压力下稳定性也有一定保证,此外不提供连接池监控,比较耗费资源,效率方面可能要低一点。

3.proxool

proxool这个连接池用的比较少,这个连接池可以设置最大和最小连接,连接等待时间等,基本功能都有。

优缺点:稳定性有一定问题,有一个需要长时间跑批的任务场景任务,优势--连接池监控这个连接池提供监控的功能,方便易用,便于发现连接泄漏的情况。

4.druid

Druid是Alibaba公司旗下开源的数据库连接池,也是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。

优缺点:Druid提供了性能卓越的连接池功能外,还集成了SQL监控,黑名单拦截功能。Druid集合了开源和商业数据库连接池的优秀特性,并结合阿里巴巴大规模苛刻生产环境的使用经验进行优化。Druid可以说是一款比较优秀的数据库连接池技术。