我们的应用程序一直在使用基于 ping 的方法,其中在执行每个查询之前。触发验证查询以检查连接是否处于活动状态。相同的数据源配置如下:
<min-pool-size>10</min-pool-size>
<max-pool-size>250</max-pool-size>
<blocking-timeout-millis>90000</blocking-timeout-millis>
<track-statements/>
<new-connection-sql>SELECT 1</new-connection-sql>
<check-valid-connection-sql>SELECT 2</check-valid-connection-sql>.
现在,在这种方法中,我们可以看到有很多次“select 1”sql 被执行并且不必要地增加了操作的总成本。
当我搜索可能的替代方案时,是在后台进行连接检查。
相同的数据源配置如下:
<min-pool-size>10</min-pool-size>
<max-pool-size>250</max-pool-size>
<blocking-timeout-millis>90000</blocking-timeout-millis>
<track-statements/>
<new-connection-sql>SELECT 1</new-connection-sql>
<check-valid-connection-sql>SELECT 2</check-valid-connection-sql>
<validate-on-match>false</validate-on-match>
<background-validation>true</background-validation>
<background-validation-millis>600000</background-validation-millis>
我的问题是这是推荐的吗?如果我们使用上述方法是否有任何负面影响?