MySQL(十二)--关于数据库连接池

MySQL(十二)–关于数据库连接池

1,什么是连接池?

数据库连接池负责分配,管理和释放连接,它允许应用程序重复使用一个现有的数据库连接,而不再重新建立一个。

2,为什么要用连接池?

一个数据库连接对象均对应一个物理数据库连接,每次操作都打开一个物理连接,使用完毕都关闭连接,这样会造成系统的下降解决方案是:在应用程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由应用程序动态地对池中的连接进行申请,使用和释放。对于>连接池中连接数的并发请求,应该在请求队列中排队等待,并且应用程序可以根据池中连接的使用率,动态地增加和减少池中的连接数

连接池技术尽可能多的重用了消耗内存的资源,大大节省了内存,提高了服务效率,能够支持更多的客户服务。同时我们可以通过其自身管理机制来监视数据库连接的数量,使用情况等

3,不使用连接池的流程:

  • TCP建立连接的三次握手
  • MySQL认证的三次握手
  • 真正SQL执行
  • MySQL的关闭
  • TCP的四次握手关闭

可以看到,未来执行一次SQL,却多了非常多的网络交互

优点:实现简单
缺点

  • 网络IO较多
  • 数据库的负载较高
  • 响应时间较长
  • 应用频繁的创建连接,关闭连接,导致临时对象较多,GC频繁
  • 在关闭连接后,会出现大量的time_wait

4,使用连接池流程:

第一次访问的时候需要建立连接,但是之后的访问,均会复用之前创建的连接,注解执行SQL语句

优点

  • 较少了网络开销
  • 系统性能会有一个实质性的提升
  • 没了麻烦的time_wait状态

5,数据库连接池的工作原理:

连接池的工作原理主要有三部分组成:①连接池的建立 ②连接池中连接的使用管理 ③连接池的关闭

第一:连接池的建立:一般在系统初始化时,连接池会根据系统配置建立,并在池中创建了几个连接对象,以便使用时从连接池中获取,连接池的连接不能随意创建和关闭,这样避免了连接随意建立和关闭造成的系统开销。

第二:连接池的管理。这个时候核心。

当客户请求数据库连接时首先查看连接池中是否有空闲连接,若存在空闲连接,则将连接分配给客户使用;若没有空闲连接,则查看当前所开的连接数是否已经达到了最大连接数,若没有达到就重新创建,若达到就按照设定的最大等待时间进行等待,若超出了最大等待时间则抛出异常。

当客户释放数据库连接时先判断该连接的引用次数是否超过了规定值,若超过了就从连接池中删除,否则保留为其他客户服务。(该策略保证了数据库连接的有效复用,避开频繁的建立,释放连接所带来的系统资源开销)

连接池的关闭
当程序退出时,关闭连接池中所有的连接,释放连接池中相关的资源,该过程正好与创建时相反。

6,连接池主要参数:

使用连接池时,要配置一下参数

最小连接数:是连接池一直保持的数据库连接。若不大,将会有大量的连接资源被浪费
最大连接数:是连接池中能申请的最大连接数。若连接请求>最大连接数,后面的数据库连接请求将被加入到等待队列中,这会影响以后的数据库操作
最大空闲时间
获取连接超时时间
超时重试连接次数

7,连接池需要注意的点:

并发问题可以使用synchronized锁等
事务处理可以使用每一个事务独占一个连接来实现,虽然这种方法有点浪费连接池资源,但可以大大降低事务管理的复杂性
连接池的分配与释放对于连接池管理可以使用一个list。即把已经创建的连接都放入list中去统一管理。每当用户请求一个连接时,系统检查这个list中有没有可以分配的连接,若有,就把那个最合适的连接分配给它,若无,就抛出一个异常给用户
连接池的配置与维护系统采取设置最小连接数(min connection)和最大连接数(max connection)等参数来控制连接池支中的连接

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值