数据库连接池

数据库连接池解决方案:当应用程序启动时,系统主动建立足够的数据库连接,并将这些连接组成一个连接池。每次应用程序请求数据库连接时,不再重新打开连接,而是从池中取出已有的连接使用,使用完后,不再关闭数据库连接,而是直接将连接归还给连接池。通过使用连接池,将大大提高程序运行效率。
1 连接池的分配与释放
连接池的管理通常使用空闲池,即将尚未分配的连接放到空闲池中。每当用户请求连接时,系统首先检查空闲池内是否存在空闲连接。如果有,分配建立时间最长的连接给用户;分配之前,还应检查连接是否有效,如果已经失效,应该删除该连接,然后考虑使用下一个连接。如果空闲池中无法找到连接,则判断连接池中的连接是否达到上限。如果没有达到,则新建连接给用户,如果已经达到,则将用户放入等待队列。一旦有连接被释放出来,等待队列中的第一个用户将获得该连接,如果请求的等待时间超过预定时间timeout,则返回空值。系统对已经分配出去的连接只计数,不再维护其有效性,只是当使用完后再返还给空闲池。空闲状态的连接,可开辟专门的线程定时检测其有效性,如果连接失效,将其清理出连接池。因为避免分配之前的检验,这样会加大系统开销,但能保证后期的响应速度。当然,也可只在分配前检测其有效性。
2连接池的配置与维护
连接池可设置最小连接数和最大连接数两个参数,这两个参数用来控制池中的连接。最小连接数是系统启动时创建的连接数。如果创建过多,则系统启动就慢,但系统后期的响应速度会很快;如果创建过少,则系统启动速度很快,但后期响应很慢。最大连接数是池中允许连接的最大数目。具体设置多少,根据系统的负载能力和系统的并发访问量决定。确保连接池中的最小连接数数目,两种策略:动态和静态。动态即指定时检测连接池,一旦发现连接数量小于最小连接数,则补充相应数量的新连接,保证连接池的正常运转。静态是当空闲连接不够时,系统才检查是否到达最小连接数。
3连接池的实现
连接池通常包括连接池类和连接池管理类。连接池类是某一数据库所有连接的“缓冲池”,主要实现一下功能:
(1) 从连接池获取或创建可用连接
(2) 使用完毕后,把连接返回给连接池
(3) 系统关闭前,断开所有连接,并释放连接占用的系统资源。
(4) 处理无效连接
(5) 限制连接池中的连接总数不低于最小连接数,且不超过最大连接数。
连接池管理类是连接池类的包装类,该类采用单态模式设计,保证系统中只有一个实例。其主要用于管理多个连接池对象,主要实现以下功能:
(1) 注册数据库驱动程序。
(2) 根据配置文件,创建连接池对象
(3) 命名连接池,管理连接池。
(4) 跟踪连接的使用,以便需要时关闭连接,并释放资源。
4常见的数据库连接池
目前流行的开源连接池:
(1) dbcp连接池
Dbcp连接池是apache软件基金组织下的开源连接池实现。该连接池依赖该组织下的另一个开源系统common-pool。


(2) c3p0连接池
C3p0连接池实现了jdbc3.0规范的部分功能,因而其性能更加突出。C3p0连接池不仅自动清理不再使用的connection,还可以自动清理statement和resultset。其性能更加突出。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值