Java数据库连接池
一般来说,Java应用程序访问数据库的过程如下:
①装载数据库驱动程序
②通过JDBC建立数据库连接
③访问数据库,执行SQL语句
④断开数据库连接
在第二步是通过创建Socket来和数据库建立连接,这里花费的时间要比实际的执行查询的操作所花费的时间还要更长,而且频繁的进行数据库连接操作会消耗大量的系统资源,所以经常会听到这么一句话“数据库连接很昂贵”。如果程序出现异常而未能断开数据库连接,还有可能导致数据库系统中的内存泄漏。
数据库连接池是创建、分配、管理和释放数据库连接的缓冲池的技术,连接池初始化时创建一定量的连接,然后从连接池中重用连接,而不是每次创建一个新的,从而减少连接创建时间。
DBCP
http://commons.apache.org/dbcp/
利用了JakartaCommonsPool来实现连接池管理。Tomcat的数据源使用的就是DBCP。
C3P0
http://sourceforge.net/projects/c3p0/
一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展,可自动回收空闲连接。目前使用它的开源项目有Hibernate,Spring等。
BoneCP
http://jolbox.com/
一个只有四十几K大小的开源的快速的JDBC连接池。
阿里巴巴的Druid
https://github.com/AlibabaTech/druid
其他
Proxoolhttp://proxool.sourceforge.net/2008年发布0.9.1版后已经不再更新
TomcatJDBCConnectionPoolhttp://people.apache.org/~fhanik/jdbc-pool/jdbc-pool.html依赖于Tomcat
DBPoolhttp://www.snaq.net/java/DBPool/
SmartPoolhttp://smartpool.sourceforge.net/
XAPoolhttp://xapool.ow2.org/
MiniConnectionPoolManagerhttp://www.source-code.biz/miniconnectionpoolmanager/