听说为了提高数据库访问效率,增加了数据库连接池这么一个功能,用来对数据库的连接进行分配管理和释放,尽量减少连接的创建和关闭,因为耗费资源。这里应该是有一个合理分配的算法的,好像不同的数据库连接池的算法不一样?不知道我理解的对不对。那么我想知道数据库的连接是什么时候创建的,是谁负责创建的呢,是一个用户创建一个连接还是一次请求一个连接呢?它又是什么时候被释放或关闭的呢?
2 回答
料青山看我应如是
TA贡献1772条经验 获得超8个赞
连接池在初始化的时候建立initCount个连接放入池中,上层程序在获取数据库连接时,先从池中获取,如果池中有,则直接返回;如果没有则判断当前被使用的连接数有没有超过maxCount,如果没有则新建一个物理连接,否则需要等待池中有空闲连接或者被使用数小于maxCount时建立一个物理连接。当连接使用完毕后,要放入到池中。系统要定时检测连接池中的连接的可用性,否则出现数据库服务器主动断开连接造成连接失效的问题,如果检测到连接失效,要将其移除池。上面大体上讲了一下连接池的逻辑,实际在编码中不同库内部实现肯定跟上面讲的不一样,但是思路上大体就是包括,放入连接池,从连接池中获取,还有连接保活。
慕尼黑的夜晚无繁华
TA贡献1864条经验 获得超6个赞
说说我的理解在spring中会配置数据源程序中都使用数据源提供的连接,这个数据源就是个连接池。程序使用完连接后会放回连接池,每个连接都是可重复利用的。对于不同的连接池实现有不同的配置参数,可以配置闲置多久则关闭连接等等。
添加回答
举报
0/150
提交
取消