为了账号安全,请及时绑定邮箱和手机立即绑定

数据库连接池的连接的创建、分配和释放是由谁负责的?

数据库连接池的连接的创建、分配和释放是由谁负责的?

沧海一幻觉 2019-04-13 08:37:13
听说为了提高数据库访问效率,增加了数据库连接池这么一个功能,用来对数据库的连接进行分配管理和释放,尽量减少连接的创建和关闭,因为耗费资源。这里应该是有一个合理分配的算法的,好像不同的数据库连接池的算法不一样?不知道我理解的对不对。那么我想知道数据库的连接是什么时候创建的,是谁负责创建的呢,是一个用户创建一个连接还是一次请求一个连接呢?它又是什么时候被释放或关闭的呢?
查看完整描述

2 回答

?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

连接池在初始化的时候建立initCount个连接放入池中,上层程序在获取数据库连接时,先从池中获取,如果池中有,则直接返回;如果没有则判断当前被使用的连接数有没有超过maxCount,如果没有则新建一个物理连接,否则需要等待池中有空闲连接或者被使用数小于maxCount时建立一个物理连接。当连接使用完毕后,要放入到池中。系统要定时检测连接池中的连接的可用性,否则出现数据库服务器主动断开连接造成连接失效的问题,如果检测到连接失效,要将其移除池。上面大体上讲了一下连接池的逻辑,实际在编码中不同库内部实现肯定跟上面讲的不一样,但是思路上大体就是包括,放入连接池,从连接池中获取,还有连接保活。
                            
查看完整回答
反对 回复 2019-04-13
?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

说说我的理解
在spring中会配置数据源
程序中都使用数据源提供的连接,这个数据源就是个连接池。
程序使用完连接后会放回连接池,每个连接都是可重复利用的。
对于不同的连接池实现有不同的配置参数,可以配置闲置多久则关闭连接等等。
                            
查看完整回答
反对 回复 2019-04-13
  • 2 回答
  • 0 关注
  • 322 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信