首页 > 数据库技术 > 详细

数据库连接池

时间:2019-07-27 16:44:15      阅读:93      评论:0      收藏:0      [点我收藏+]

数据库连接池

问:什么是连接池技术?

答:不用思考得太复杂,简单说,就是对数据库连接进行管理的技术。

流行的连接池有 JNDI,dbcp,c3p0,druid。顺便一提,Spring框架使用的第三方依赖工具是dbcp和c3p0.

一、连接池的基本思想(连接复用)

在系统启动时先创建一定数量的连接存放在连接池中。(初始化的连接数量由参数initialSize决定)

当用户请求获取连接时,从连接池中取出一个连接返回给用户。而不是创建一个链接给用户

当用户不需要连接时,将连接放回连接池中而不是关闭该连接。

二、使用连接池的好处

如果不使用连接池会出现的状况:在获取连接时需要创建一个连接,不使用连接时又需要关闭连接,每次获取每次都要创建,每次使用完毕每次都要关闭。这样一来就会产生频繁的创建和关闭连接的操作(对硬盘频繁的读写),这样不仅速度慢,对数据库的负荷也增大了。

使用连接池能解决上面的问题,初始化时创建一堆连接放到连接池中(内存),获取连接时直接从池中获取,速度更快。连接使用完毕后归还到池中,供下一次使用(标记为空闲,池中空闲数+1)。连接池的好处是,提高了速度,减少对数据库的负荷。

三、连接池常见参数的说明(不同框架使用的参数名称可能不一致,这里以druid为例)

minIdle:连接池中最小空闲数。

     当检测到池中空闲数小于minIdle并且池中连接数小于maxActive时,补充空闲连接数量。否则不做任何操作

     设置该参数的好处是:在大部分时间都能保证池中有空闲连接可供使用。

initialSize:初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时  

maxActive:连接池中最大连接数量,可以理解成连接池的容量。(空闲数+非空闲数 = 池中连接数 <= maxActive)

maxIdle:druid已经不再使用此参数,但是其他框架还在使用。此参数代表连接池中最大空闲数。

      例如:maxActive=20,maxIdle=10。假设当前有20个连接正在使用,当这20个连接使用完毕后,只会归还10个到池中,剩余的10个将会被关闭和删除。

maxWait:获取连接时最大等待时间。超过此时间仍没有等到有空闲连接时,抛出无空闲连接异常。

四、获取连接和归还连接的基本流程

以下是基本流程:

 技术分享图片

参考连接:

连接池的实现

DruidDataSource配置属性

maxIdle和maxActive代表的意思

 

数据库连接池

原文:https://www.cnblogs.com/oldpub-blog/p/11254602.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!