连接池简介

来源:互联网 发布:java是面向对象的吗 编辑:程序博客网 时间:2024/06/07 01:58

数据库连接是很宝贵的资源,这一点在多用户的网页应用程序中体现得非常明显。对数据库连接的管理能显著提升整个应用程序的性能指标。

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

连接池的基本思想是在系统初始化的时候,将数据库连接作为对象存储在内存中,当用户需要访问数据库时,并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象。使用完毕后,用户也并非将连接关闭,而是将连接放回连接池中,准备为下一个请求访问使用。而连接的建立、断开都由连接池自身来管理。同时,还可以通过设置连接池的参数来控制连接池中的初始连接数、连接的上下限数以及每个连接的最大使用次数、最大空闲时间等等,也可以通过其自身的管理机制来监视数据库连接的数量、使用情况等。

常用的数据库连接池有:

DBCP:

DBCP (DatabaseConnection Pool)是一个依赖Jakarta commons-pool对象池机制的数据库连接池,Tomcat的数据源使用的就是DBCP。

c3p0:

C3p0是一个开源的JDBC连接池,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。

Druid:

Druid是阿里巴巴开源平台上一个数据库连接池实现,它结合了c3p0、DBCP、PROXOOL等连接池的优点,同时加入了日志监控,可以很好地监控数据库池连接和SQL的执行情况,在官网上被称为“为监控而生的数据库连接池”。

三种连接池的功能比较如表所示。

 

功能

DBCP

Druid

c3p0

是否支持PSCache

监控

jmx

jmx/log/http

jmx/log

扩展性

sql拦截及解析

支持

代码

简单

中等

复杂

特点

依赖于common-pool

阿里开源,功能全面

历史久远,代码逻辑复杂,且不易维护



原创粉丝点击