连接池技术(基础)

1.连接池原理:
连接池技术的核心思想是:连接复用,通过建立一个数据库连接池以及一套连接使用,分配,管理策略,是的连接池中的连接可以得到高效、安全的复用,避免了数据库连接频繁建立,关闭的开销。

连接池主要由三部分组成:

1. 连接池的建立
2. 连接池的管理
3. 连接池的关闭

1.1连接池的建立:

应用程序中建立的连接池其实是静态的。 所谓静态连接池是指连接池中连接在系统初始化时就已分配好,且不能随意关闭连接。
     Java中提供了很多容器类可以很方便的构建连接池,如:Vector,Stack,Servlet,Bean等,通过读取连接属性文件 Connections.properties与数据库实例建立连接。在系统初始化时,根据相应的配置创建连接并放置到连接池中,以便需要使用时从连接池 中获取,这样就可以避免连接随意的建立、关闭造成的开销。

1.2连接池的管理:

连接池的管理策略是连接池的核心。当连接池建立后,如何对连接池中连接进行管理,解决好连接池内连接 的分配和释放,对系统的性能有很大的影响。
连接池的合理分配、释放可提高连接的复用,降低了系统建立新连接的开销,同时也加速了用户的访问速度。

连接池中连接的分配和释放策略:
连接池的分配、释放策略对于有效复用连接非常重要,我们采用的是一个很有名的设计模式:
Reference Counting(引用记数)     
该模式在复用资源方面应用非常广泛,把该方法运用到对于连接的分配释放上,为每一个数据库连接,保留一个引用记数,用来记录该连接的使用者的个数。具体的实现方式是:

     当客户请求数据库连接时,首先查看数据库中是否有空闲连接(指当前没有分配出去的连接 )。如果存在空闲连接,则把连接分配给客户并作相应处理(即标记该连接为正在使用,引用记数加1 )。如果没有空闲连接,则查看当前所开的连接数是不是已经达到maxConn(最大连接数 ),如果没有达到就重新创建一个连接给请求的客户;如果达到就按设定的maxWaitTime(最大等待时间 )进行等待,如果等待maxWaitTime后仍没有空闲连接,则抛出无空闲连接的异常给用户。

当客户释放数据库连接时,先判断该连接的引用次数是否超出了规范值 ,如果超出了就删除该连接,并判断
当前连接池内总的连接数是否小于minConn(最小连接数 ),若小于就将连接池充满;如果没超过就将该来接标记为开放状态,可供再次复用。可以看出正是这套策略保证了数据库连接的有效复用,避免频繁地建立、释放连接所带来的系统资源的开销。

1.3连接池的关闭:
当应用程序退出时,因关闭连接池,此时应把连接池建立时向数据库申请的连接对象统一归还给数据库(即关闭所有数据库连接),这与连接池的建立正好是一个相反过程。

1.4连接池的配置:
数据库连接池中到底要放置多少个连接,才能使系统的性能更佳,用minConn和maxConn来限制。
minConn是当应用程序启动的时候连接池所创建的连接数,如果多大启动将变慢,但是启动后响应更快;如果过小启动加快,但是最初使用的用户将因为连接 池中没有足够的连接不可避免的延缓了执行速度。因为应该在开始的过程中设定较小的minConn,而在实际应用中设定较大minConn。maxConn 是连接池中最大的连接数,可以通过反复试验来确定此饱和点。为此在连接池类ConnectionPool中加入两个方法 getActiveSize()getOpenSize(),ActiveSize表示某一时间 有多少连接正被使用,OpenSize表示连接池中有多少连接被打开,反映了连接池使用的峰值。将这两个值在日志信息中反应出来,minConn的值应该 小于平均ActiveSize,而maxConn的值应该在activeSize和OpenSize之间。





  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值