首页>java频道>java教程>正文
几种如何减少JDBC连接池开销的方法

www.zige365.com 2010-6-7 10:54:23 点击:发送给好友 和学友门交流一下 收藏到我的会员中心

在一个服务器的应用中,会处理来自多个不同用户的请求,并且必须为每一个用户保持并打开一个链接(防止事务的崩溃),由于创建一个Connection的尽管实现起来简单,但对于大流量的服务器应用来说却要花费大量的时间。

为了使JDBC连接池连接的时间尽可能的少

解决方法有以下几种:

一:为每个访问数据的servlet和jsp页面维护一个Connection,并保持在一个实例变量中,直到应用关闭,但这样会导致大量的多线程问题。另外对于数据库能保持的连接数代价时昂贵的,商业数据指定价格一部分时基于同时打开的连接数的。

二:最好的做法就是使用一个JDBC连接池。其优点有以下几点:

1:创建连接的时间缩短,因为在池中链接时可以重用的。

2:解决了多线程的问题。

3:连接池可以指定Connection的最大连接数,使得每一个链接得到最高效的利用。

另外:由于所有的用户使用的时同样的Connection对象,因此不能依赖数据库引擎着个的限制用户对保护资源的访问,因此要为不同的用户角色组使用不同的连接池,为不同的数据帐户来创建不同的Connection对象。

在jdk文档中明确说明了:DataSource是一个接口,作为DriverManager工具的替代项,DataSource对象是获取连接的首选方法。

实现此接口的类可以提供JDBC连接池功能。

PooledConnection类,该类为连接池管理提供钩子(hook)的对象。PooledConnection对象表示到数据源的物理连接,当应用程序调用DataSource.getConnection方法时,它取回Connection对象。如果连接池已完成,则该Connection对象实际上是到PooledConnection对象的句柄,这是一个物理连接。

需要注意的是当应用调用close()方法时,并不是关闭数据库链接,而是通知其链接在池中已不再使用,然后DataSource会将该PooledConnection返回至JDBC连接池。

基于JDBC的应用中几乎全是围绕Connection接口展开的,必须创建一个连接Connection,此连接相当于应用和数据库之间的一个通道,并且它还是事务的边界,只有通过同一个Connection执行的SQL语句才能组成一个事务。

在一个服务器的应用中,会处理来自多个不同用户的请求,并且必须为每一个用户保持并打开一个链接(防止事务的崩溃),由于创建一个Connection的尽管实现起来简单,但对于大流量的服务器应用来说却要花费大量的时间。

连接池流程图

【编辑推荐】

  1. 在Weblogic中实现JDBC的功能
  2. 详解JDBC与Hibernate区别
  3. JDBC连接MySQL数据库关键四步
  4. 五步精通SQL Server 2000 JDBC驱动安装与测试
  5. 详解JDBC驱动的四种类型
  6. JDBC存储过程在Oracle中的获取结果集
我要投稿 新闻来源: 编辑: 作者:
相关新闻
JSP JDBC来连接SQL Server 2005的方法
研究分析JDBC技术在数据库连接池上的应用
JDBC连接Sybase数据库的三种方法
JDBC数据源的几种形式
java教程:finalize()方法