工作中,遇到了应用程序需要数据库连接池.这无疑是对程序性能的一个挑战.为什么使用数据库连接池呢?因为每次新建个连接,非常耗费资源.本人在自己的笔记本上做实验的结果如下:
每秒中,可以向MySQL中插入纪录4000条.而创建一个连接则需要200毫秒左右的时间.使用了连接池技术以后,创建连接几乎不用任何时间,用System.currentTimeMillis()打印时间差,为0毫秒.可见在大量并发访问的情况下,系统的性能通过连接池得到了飞跃.
因此搜索了好多开源框架,找到了DBCP.Tomcat的数据源技术,也是基于DBCP实现的.DBCP数据库连接池使用的方式很多,动态设置,配制文件(xml,properties).下面是示例代码.以及相关的驱动包我也给出来了.有兴趣的朋友们可以去试验一下.^-^
数据库连接字符串例子
String url="jdbc:sqlserver://localhost:1433;database=数据库名;user=用户名;password=密码";
其中,connection有多个构造方法,可以根据自己的需要调整连接字符串是否有用户名和密码.
commons项目地址:http://commons.apache.org/
import java.sql.SQLException;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSource;
public class TestDBCP {
public static void main(String[] args) throws SQLException {
BasicDataSource ds = new BasicDataSource();
// 基本参数
ds.setDriverClassName("com.mysql.jdbc.Driver");
ds.setUsername("root");
ds.setPassword("147258369");
ds.setUrl("jdbc:mysql://192.168.0.34:3306/cold");
// 池属性
ds.setInitialSize(5);// 初始化连接池时,创建连接个数
ds.setMinIdle(10);// 最小空闲连接数
ds.setMaxIdle(100);// 最大空闲连接数
ds.setMaxActive(100);// 连接池最大并发容量
// 可选测试参数,数据连接检测使用,网上常说的BUG,就是因为没设置下面属性引起的CONNECTION失效.
ds.setValidationQuery("select 1");
ds.setTestOnBorrow(true);
ds.setTestOnReturn(true);
ds.setTestWhileIdle(true);
// 大于0 ,进行连接空闲时间判断,或为0,对空闲的连接不进行验证
ds.setMinEvictableIdleTimeMillis(1 * 60 * 1000);
// 失效检查线程运行时间间隔,如果小于等于0,不会启动检查线程
ds.setTimeBetweenEvictionRunsMillis(5 * 60 * 1000);
DataSource ds2 = (DataSource) ds;
System.out.println(ds2.getConnection());
}
}
注意:
timeBetweenEvictionRunsMillis 和 minEvictableIdleTimeMillis,他们两个配合,可以持续更新连接池中的连接对象,当 timeBetweenEvictionRunsMillis 大于0时,每过timeBetweenEvictionRunsMillis 时间,就会启动一个线程,校验连接池中闲置时间超过minEvictableIdleTimeMillis的连接对象。
参考
commons-dbcp源码研究
http://macrochen.iteye.com/blog/320077
分享到:
相关推荐
DBCP的工作原理是,程序首先会初始化相应的数据库连接池,以供程序访问,当某个操作需要访问数据库时,程序会首先在连接池中取得空闲连接,如没有空闲连接在创建,用完之后归还连接池,这样达到了连接的重利用,不用...
commons-dbcp.jar dbcp数据库连接池驱动,包括pool、logging两个依赖
dbcp连接池所需jar(commons-collections-3.1.jar,commons-dbcp-1.2.jar,commons-pool-1.6.)
dbcp所需jar包,DBCP 数据库连接池所需jar包里面有commons-dbcp-1.4.jar、commons-pool-1.5.6.jar.rar 1、首先在项目下创建一个文件夹,保存我们的jar包。在项目名上右击,依次点击【New】-->【Floder】,打开...
Commons-dbcp.jar:连接池的实现
DBCP(DataBase Connection Pool)数据库连接池,是java数据库连接池的一种
DBCP是Apache提供的一款开源免费的数据库连接池!Hibernate3.0之后不再对DBCP提供支持!因为Hibernate声明DBCP有致命的缺欠!DBCP因为Hibernate的这一毁谤很是生气,并且说自己没有缺欠。
commons-pool-1.6,commons-dbcp-1.4 连接池下载
commons-dbcp-1.2.jar包是一款主流的数据库连接池之一(DBCP,c3p0,proxool),如果缺少了这个commons-dbcp.jar包,那将无法对数据库连接池进行正常使用,需要此款commons-dbcp-1.2.jar包的朋友们欢迎前来下载使用。...
commons-dbcp2-2.5.0-bin dbcp连接池相关的jar包及api文档
DBCP一般指数据库连接池。 单独使用DBCP需要使用commons-dbpc.jar、commons-collections.jar、commons-pool.jar三个包,都可以在Apache组织的网站上下到(commons.apache.org)。 数据库连接池负责分配、管理和释放...
DBCP包 commons-dbcp-1.2.1.zip commons-pool-current.zip
commons-dbcp-1.2和commons-pool-1.6,web开发,连接池架包
commons中的DBCP连接池jar,用于利用dbcp链接数据库
DBCP数据库连接池所需jar包commons-dbcp2-2.1.jar
java中DBCP数据库连接池使用方法以及代码文件:(dbcpconfig.properties+JdbcPool_dbcp.java)以及jjdbc所需的ar包(commons-pool.jar+commons-dbcp-1.2.2.jar)
由于commons-dbcp2所用的连接池出现版本升级,因此commons-dbcp2中的数据库池连接配置也发生了变化,具体的参数配置说明
commons-dbcp2-2.1.1.jar使用dbcp进行数据库连接池的jar包
tomcat 连接池 mssql 驱动包
DBCP数据库连接池的完整jar包