当前位置: 首页 > 知识库问答 >
问题:

DBCP 1.3验证查询降低性能

梁丘烨
2023-03-14

我正在使用一个嵌入式数据源(ApacheCommonsDBCP1.3),JDBC3DB2JCC,进行Spring批处理。用于BD2数据库和JDK1的jar。5.我知道DBCP2。x已经发布,但由于现有系统(JDK1.5),我现在无法升级。

数据库配置:

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="com.ibm.db2.jcc.DB2Driver"/>
    <property name="url" value="****"/>
    <property name="username" value="***"/>
    <property name="password" value="****"/>
    <property name="initialSize" value="5"/>
    <property name="maxActive" value="10"/>
    <property name="maxIdle" value="10"/>
    <property name="maxWait" value="10000"/>
    <property name="minEvictableIdleTimeMillis" value="30000"/>
    <property name="timeBetweenEvictionRunsMillis" value="5000"/>
    <property name="validationQuery" value="select 1 from sysibm.sysdummy1"/>
    <property name="testOnBorrow" value="true"/>
    <property name="testOnReturn" value="true"/>
    <property name="testWhileIdle" value="true"/>
</bean>

我注意到,如果将validationQuery属性与testOnBorrow、testOnReturn和testWhileIdle一起使用,则完成该过程所需的时间将增加3倍。

在分析这一点时,我发现tomcat JDBC连接池中有一个属性“validationInterval”。

我的问题:

1) 是否有任何方法可以在DBCP1中设置validationInterval。3,这样它不会一直验证连接,而是在指定的时间段之后

2) 如果我不使用validationQuery,我会遇到什么问题吗?

3) 如果没有validationQuery,则说明如何使用DBCP1。3将验证连接?

[编辑]:

以下是Nitin建议后的测试结果:

使用以前的配置运行1:总时间-74秒

运行2个配置:设置testOnBrow=true,testOn返回=false,testWhileIdle=false

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="com.ibm.db2.jcc.DB2Driver"/>
    <property name="url" value="****"/>
    <property name="username" value="***"/>
    <property name="password" value="****"/>
    <property name="initialSize" value="5"/>
    <property name="maxActive" value="10"/>
    <property name="maxIdle" value="10"/>
    <property name="maxWait" value="10000"/>
    <property name="minEvictableIdleTimeMillis" value="1800000"/>
    <property name="timeBetweenEvictionRunsMillis" value="1800000"/>
    <property name="validationQuery" value="select 1 from sysibm.sysdummy1"/>
    <property name="testOnBorrow" value="true"/>
    <property name="testOnReturn" value="false"/>
    <property name="testWhileIdle" value="false"/>
</bean>

总耗时47秒

然而调整"timeBetweenEvictionRunsMillis"流转时长变化不大,但我决定将此设置为30分钟

共有1个答案

吕骞尧
2023-03-14

1)没有。试试看

testOnBorrow=true

testOnReturn=false

测试错误

2)

您可能会因为转义验证而得到陈旧的(破碎的)连接。然而,您可以“调整”时间在EvictionRunsMillis...该线程每5秒执行一次以驱逐空闲连接

3)

在DBCP 1.3中没有validationQuery就无法验证连接

 类似资料:
  • 我对BigQuery中的集群表(带有日期分区)有一个问题。我有一个由名为entity_id的列集群的表。问题是,我希望在进行由这些集群列过滤的查询时看到字节读取减少,但根据BigQuery Web UI,它无论如何都在进行全扫描。 例如:<br>从<code>project.usersDataset中选择*。users_cluster其中entity_id='405849241'限制为1000 返

  • 本文向大家介绍MongoDB查询性能优化验证及验证,包括了MongoDB查询性能优化验证及验证的使用技巧和注意事项,需要的朋友参考一下 结论: 1、 200w数据,合理使用索引的情况下,单个stationId下4w数据。mongodb查询和排序的性能理想,无正则时client可以在600ms+完成查询,qps300+。有正则时client可以在1300ms+完成查询,qps140+。 2、 Mon

  • 问题内容: 已关闭 。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗? 更新问题,使其仅通过编辑此帖子来关注一个问题。 6个月前关闭。 我在Laravel查询生成器和雄辩者之间进行了一些性能测试。使用各种sql语句(select-update-delete- insert),查询生成器要快得多。 所以我的问题是:为什么有人对普通查询生成器使用Laravel Eloquent? 问题答案

  • 我正在从一个2.37GB的RDF数据集进行查询,其中包含大约1700万个三元组,并且还维护了该数据集的lucence索引。我尝试了jena-text模块的文本查询,它是在存储的lucene索引的基础上进行搜索的。但是它的性能相当慢,对于一个非常慢的搜索查询需要4秒或更多的时间。 然而,当我使用luncene索引查看器'luke'。索引似乎没有问题,当我从索引中搜索特定的术语时,搜索它需要几毫秒的时

  • 根据AWS文档,我正在使用dynamo db分页: -- -- 令人惊讶的是,当我不设置任何页面大小(1)时,DynamoDb查询速度明显更快,根据文档,情况应该不是这样。我假设dynamo db在默认情况下返回所有结果,如果我们不指定pageSize。

  • 问题内容: 我有一个接收对象并根据其检测到的对象类型执行某些操作的方法: 如何降低环复杂性?我四处搜寻,但找不到任何有用的资讯。 问题答案: 您不能为此使用面向对象的方法吗?创建具有该方法的接口,然后创建实现所需行为的子类?然后调用将执行适当的行为?