关于DruidPlugin参数validationQuery

druid配置说明   

       1:初始化连接:可考虑设置为3个连接 。对于db规模特别大的情况下可考虑设置为1个。避免启动时间过长;

       2:最小连接:可考虑该值的设置和初始化连接保持一致;

       3:最大连接:对于有较大DB规模,最大连接不要设置过大,避免本地维护的db太大。 如果对应到数据源的并发数过高,可考虑增大最大连接数。

       4:获取连接的超时时间:如果连接全部被占用,需要等待的时间。可以根据当前系统的响应时间判定,如果容忍度较高,可以大点。容忍度较低,设置小点。

       5:当获取连接和释放连接心跳检测:建议全部关闭,否则每个数据库访问指令会对数据库生产额外的两条心跳检测的指令,增加数据库的负载。连接有效性的检查改用后台空闲连接检查。

       6:连接有效性检测时间:该值需要结合数据库的wait_timeout,interactive_timeout值进行设置。假如数据库为120s,则心跳检测时间在120s以内越大越好。如果太小,心跳检测时间会比较频繁。建议设置为90s。

       7:最大空闲时间:如果连接超过该时间没有使用过,则会进行close掉。 该值不要太小,避免频繁的建立连接关闭连接。也不要太大,导致一直无法关闭。

       8:心跳检查的sql语句:尽量使用ping命令,ping的性能较查询语句高。大部分的数据库连接池不配置query语句,便会调用ping命令。

       9:prepareStatement缓存:可以根据自己的业务来判定是否开启。开启后对性能的影响依赖于具体业务和并发情况。可考虑暂时不开启。

       10:连接使用超时:业务拿到一个连接,如果超过指定的时间未归还,是否把该连接给给回收掉。超时时间等和具体的业务关联。暂时建议先不开启。

Q:请教波总,关于这个参数会对性能有影响吗?先阶段jfinal是有默认值的。


评论区

JFinal

2016-12-09 15:52

这种检测的性能消耗可以忽略不计,发个很轻量的请求的而已,并且还是在独立的线程之中,丝毫不干扰你正使用的线程

charlox

2016-12-09 17:03

@JFinal 感谢波总悉心解答,顺便在问一下,jfinal关于redis集群是怎么处理的

JFinal

2016-12-09 17:27

@charlox 集群简单来说,只要做好多份数据的同步,或是避免数据多份从而使用共享数据即可

而 redis 之下,如果你只有一个 redis 服务端,那么天然就支持了分布式,如果是多个 redis 服务端,只需要利用 reids 的集群配置做好数据同步就好

jfinal 仅仅是一个 web mvc + orm 框架,所以集群问题在本质上与 jfinal 无关

charlox

2016-12-09 17:34

@JFinal 感谢波总解答。

热门反馈

扫码入社