天天看点

spring mysql 连接池配置_spring 数据库连接池配置

#removeAbandoned

true,false,

是否清理

removeAbandonedTimeout

秒没有使用的活动连接

,

清理后并没

有放回连接池

#removeAbandonedTimeout

活动连接的最大空闲时间

#logAbandoned true,false,

连接池收回空闲的活动连接时是否打印消息

testOnBorrow

testOnReturn

testWhileIdle

,他们的意思是当是取得连接、返回连接或连接

空闲时是否进行有效性验证(即是否还和数据库连通的)

,默认都为

false

。所以当数据库连

接因为某种原因断掉后,

再从连接池中取得的连接,实际上可能是无效的连接了,

所以,为

了确保取得的连接是有效的,

可以把把这些属性设为

true

当进行校验时,

需要另一个参数:

validationQuery

,对

oracle

来说,可以是:

SELECT COUNT(*) FROM DUAL

,实际上就是个简单

SQL

语句,验证时,就是把这个

SQL

语句在数据库上跑一下而已,如果连接正常的,当

然就有结果返回了。

还有

2

个参数:

timeBetweenEvictionRunsMillis

minEvictableIdleTimeMillis

,他们两个

配合,可以持续更新连接池中的连接对象,当

timeBetweenEvictionRunsMillis

大于

时,每

timeBetweenEvictionRunsMillis

时间,就会启动一个线程,校验连接池中闲置时间超过

minEvictableIdleTimeMillis

的连接对象。

还有其他的一些参数,可以参考源代码。

部分参数简要说明:

removeAbandoned

:是否自动回收超时连接

removeAbandonedTimeout

:超时时间

(

以秒数为单位

)

rmoveAbandoned=true

那么在

getNumActive()

快要到

getMaxActive()

的时候,

系统会进行无效

Connection

的回收,回收的

Connection

removeAbandonedTimeout(

默认

300

)

中设置

的秒数后没有使用的

Connection

logAbandoned

logAbandoned=true

的话,

将会在回收事件后,

log

中打印出回收

Connection

的错误信息,包括在哪个地方用了

Connection

却忘记关闭了,在调试的时候很有用。

maxWait

:超时等待时间以毫秒为单位

maxIdle

:最大空闲连接

minIdle

:最小空闲连接

maxActive

:最大连接数

<

property

name

=

"Pool.PingQuery"

value

=

"select   count(id)   from

gnet_ss_mail_sending_lock"

/>

<

property

name

=

"Pool.LogAbandoned"

value

=

"true"

/>

<

property

name

=

"Pool.RemoveAbandoned"

value

=

"true"

/>

<

property

name

=

"Pool.RemoveAbandonedTimeout"

value

=

"50000"

/>