Druid属性说明

/ 默认分类 / 0 条评论 / 903浏览

属性说明




解释

Q1:timeBetweenEvictionRunsMillisminEvictableIdleTimeMillistestWhileIdle三者之间的关系

A1:开启testWhileIdle后,等于每次申请连接时可能会做一个检测,之所以是可能,是因为只有当这个连接的空闲时间超过了timeBetwee...才会检测,检测的方式就是我们配置的检测的sql ,而timeBetween...的意思是连接Destroy线程周期检测空闲连接是否有效的间隔时间,需要注意的是,这里的检测方法不是和上面一样的通过sql来检测而是判断当前的连接空闲时间是否超过另一个参数 minEvita...,所以这里可以看出之所以testWhile...开启后的判断是否需要检测连接是否有效的判断标准是看连接的空闲时间是否已经超过timeBetwee...,因为在这个这个间隔中是有一个Destroy线程自动检测连接是否有效的 所以这是testWhile...和testOnBorr...在申请连接时检测连接是否有效的最大的区别,后者不会判断,每次取连接的时候都会判断,这样导致效率会比较低,所以建议开启的是testWhile...

1.Destroy线程会每隔timeBetweenEvictionRunsMillis时间检测一下连接的最后活跃时间和当前时间的差值(空闲时间 || 拿了但是没有使用的时间)是否超过minEvictableIdleTimeMillis,如果超过则关闭当前连接。
2.testWhileIdle开启后,在申请连接的时候会检测连接,如果空闲时间大于timeBetweenEvictionRunsMillis则会执行validationQuery检测连接是否有效