数据库连接池设计思路

基本原理

数据库连接池的基本原理是,事先建立一定量的数据库连接,这些连接存放在连接池中,当java应用程序执行一个数据库事物时,只需要从连接池中取出空闲的数据库连接。

当java应用执行完后,再将数据库连接放回连接池。

连接池需要考虑以下的问题

  1. 限制连接池中最多、可以容纳的连接数目,避免过度消耗系统资源。
  2. 当客户请求连接,而连接池中所有连接都已被占用时,该如何处理呢?一种方式是让客户一直等待一直等待,直到有空闲连接,另一种方式是为客户分配一个新的临时连接。
  3. 当客户不在使用连接,需要把连接重新放回连接池。
  4. 连接池中允许处于空闲状态的连接的最大项目。假定允许的最长空闲时间为十分钟,并且允许空闲状态的连接最大数目为5,

那么当连接池中有n个(n>5)连接处于空闲状态的时间超过十分钟时,就应该把n-5个连接关闭,并且从连接池中删除,这样才能更有效的利用系统资源。

连接池实现策略

  • 取出连接:如果连接池缓存不为空,就从中取出一个连接并将其返回,否则新建一个连接将其返回。

  连接池的getConnection()方法返回一个连接池的代理,连接代理实现了Connection接口,但它的close()方法不会断开数据库连接,而是把自身放回连接池(释放连接)。

  在Invocationhandler实现类的invoke()方法里面加入如下关键代码

  if(method.getName().euqals("close")){

    pool.releaseConnection((Connection)proxy)

  }

  • 释放连接:如果连接池缓存未满,就把连接放回连接池缓存,否则就关闭该连接。
  • 关闭连接池:如果连接池缓存中的所有连接关闭,在清空连接池缓存。

转载于:https://www.cnblogs.com/ssskkk/p/9678471.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值