初探数据库连接池

数据库连接池

问:什么是连接池技术?

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

流行的连接池有 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代表的意思

 

posted on 2019-07-27 16:11  老酒馆  阅读(158)  评论(0编辑  收藏  举报

导航