浅谈几种如何减少JDBC连接池开销的方法

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

在一个服务器的应用中,会处理来自多个不同用户的请求,并且必须为每一个用户保持并打开一个链接(防止事务的崩溃),由于创建一个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中的获取结果集
责任编辑:彭凡 来源: 人民邮电出版社
相关推荐

2009-07-17 13:32:49

JDBC数据库

2019-12-30 15:30:13

连接池请求PHP

2009-07-09 17:36:44

JDBC连接池配置

2010-10-26 16:15:33

连接Oracle数据库

2009-07-21 11:05:49

关闭ADO.NET连接

2011-07-04 10:17:38

JDBC

2009-07-17 17:07:17

JDBC教程

2009-07-03 17:37:54

JSP数据库

2010-01-05 10:11:23

ADO.NET连接池

2010-11-08 16:46:57

2009-07-22 13:49:40

JSP JDBC

2009-07-17 17:41:25

JDBC连接SQL S

2009-07-21 17:41:58

JDBC数据源

2009-09-22 14:57:34

Hibernate d

2021-07-07 14:20:15

高并发服务数据库

2011-06-01 13:54:10

MySQL

2009-06-17 09:59:46

Hibernate 连

2010-06-25 10:36:27

Java连接池

2020-02-03 15:15:27

Druid连接池性能超出竞品

2010-12-10 16:19:04

JDBC数据库连接池DDLSQLJ存储过程
点赞
收藏

51CTO技术栈公众号