今天虽然没听到老师的直播,但是看到老师整理的思路,决定去研究下这三个参数。
这三个参数跟健康检查机制有关
Druid检测连接是否有效的参数 :
-
testOnBorrow:每次获取连接时执行validationQuery检测连接是否有效(会影响性能)
-
testOnReturn:每次归还连接时执行validationQuery检测连接是否有效(会影响性能)
-
testWhileIdle:申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效
druid 提供了两种健康检查机制:
1. validationQuery 查询机制。通过配置 validationQuery sql 语句,检查连接时执行 validationQuery 语句看是否正常,一般配置为 select 'x'。低版本的 druid 默认只支持该模式,检查时就在原来的连接执行一次 validationQuery 配置的sql 语句,来校验连接是否正常。这种机制下 validationQuery 是必须配置的,如果 validationQuery 没有配置,即使 testOnBorrow、testOnReturn、testWhileIdle 三个开关打开都不能生效
2. ValidConnectionChecker 机制。高版本支持定义模式,默认情况下 druid 会为不同的 JDBC 设置 checker。MySql 的默认ValidConnectionChecker 是以 ping 方式处理。