目录

一、基本配置

二、关键配置 

三、性能配置

1.预缓存设置

2.连接有效性检测设置

3.超时连接关闭设置

4.重连设置


一、基本配置

基本配置是指连接池进行数据库连接的四个基本必需配置,传递给JDBC驱动的用于连接数据库的用户名、密码、URL以及驱动类名

注意:在Druid连接池的配置中,driverClassName可配可不配,如果不配置会根据url自动识别dbType(数据库类型),然后选择相应的driverClassName

 

DBCP

C3P0

Druid

用户名

username

user

username

密码

password

password

password

URL

url

jdbcUrl

jdbcUrl

驱动类名

driverClassName

driverClass

driverClassName

二、关键配置 

为了发挥数据库连接池的作用,在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数来设定的。无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数,当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中。当没有可用连接时,连接池等待连接被归还的最大时间,超过时间则抛出异常,可设置参数为0或者负数使得无限等待(根据不同连接池配置)。

数据库连接池在初始化的时候会创建initialSize个连接,当有数据库操作时,会从池中取出一个连接。如果当前池中正在使用的连接数等于maxActive,则会等待一段时间,等待其他操作释放掉某一个连接,如果这个等待时间超过了maxWait,则会报错;如果当前正在使用的连接数没有达到maxActive,则判断当前是否空闲连接,如果有则直接使用空闲连接,如果没有则新建立一个连接。在连接使用完毕后,不是将其物理连接关闭,而是将其放入池中等待其他操作复用。

 

DBCP

C3P0

Druid

最小连接数

minIdle(0)

minPoolSize(3)

minIdle(0)

初始化连接数

initialSize(0)

initialPoolSize(3)

initialSize(0)

最大连接数

maxTotal(8)

maxPoolSize(15)

maxActive(8)

最大等待时间

maxWaitMillis(毫秒)

maxIdleTime(0秒)

maxWait(毫秒)

最大空闲连接数

maxIdle(8)



三、性能配置

1.预缓存设置

即是PSCache,PSCache对支持游标的数据库性能提升巨大,比如说Oracle。JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量。但由于预缓存的statements属于单个connection而不是整个连接池,所以设置这个参数需要考虑到多方面的因素。

单个连接拥有的最大缓存数:要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说100。

 

DBCP

C3P0

Druid

开启缓存功能

poolPreparedStatements

maxStatements

poolPreparedStatements

单个连接拥有的最大缓存数

maxOpenPrepared-Statements

maxStatementsPer-Connection

maxOpenPrepared-Statements

2.连接有效性检测设置

连接池内部有机制判断,如果当前的总的连接数少于miniIdle,则会建立新的空闲连接,以保证连接数得到miniIdle。如果当前连接池中某个连接在空闲了timeBetweenEvictionRunsMillis时间后任然没有使用,则被物理性的关闭掉。有些数据库连接的时候有超时限制(mysql连接在8小时后断开),或者由于网络中断等原因,连接池的连接会出现失效的情况,这时候设置一个testWhileIdle参数为true,可以保证连接池内部定时检测连接的可用性,不可用的连接会被抛弃或者重建,最大情况的保证从连接池中得到的Connection对象是可用的。当然为了保证绝对的可用性,你也可以使用testOnBorrow为true(即在获取Connection对象时检测其可用性),不过这样会影响性能。

 

DBCP

C3P0

Druid

申请连接检测

testOnBorrow

testConnectionOnCheckin

testOnBorrow

是否超时检测

testWhileIdle

testWhileIdle

空闲时间

timeBetweenEvictionRunsMillis

idleConnectionTestPeriod

timeBetweenEvictionRunsMillis

校验用sql语句

validationQuery

preferredTestQuery

validationQuery

归还连接检测

testOnReturn

testConnectionOnCheckout

testOnReturn

3.超时连接关闭设置

removeAbandoned参数,用来检测到当前使用的连接是否发生了连接泄露,所以在代码内部就假定如果一个连接建立连接的时间很长,则将其认定为泄露,继而强制将其关闭掉。

 

DBCP

C3P0

Druid

是否超时关闭连接

removeAbandoned

breakAfterAcquireFailure

removeAbandoned

超时时间

removeAbandonedTimeout

checkoutTimeout

removeAbandonedTimeout

是否记录日志

logAbandoned

logAbandoned

4.重连设置

 设置获取连接失败后,是否重新连接以及间隔时间。

 

DBCP

C3P0

Druid

重连次数

acquireRetryAttempts

间隔时间

acquireRetryDelay