Jdbc DB2查询超时问题-如何处理
这可能被问了很多次,但到目前为止,他们都没有帮助我 以下是一些历史:Jdbc DB2查询超时问题-如何处理,jdbc,jboss,db2,Jdbc,Jboss,Db2,这可能被问了很多次,但到目前为止,他们都没有帮助我 以下是一些历史: 查询时间:120秒 数据库:DB2 应用服务器:JBoss 框架:Struts2 我有一个查询获取了大约一百万条记录。是的,为了缓存的目的,我们需要一次获取所有数据,遗憾的是,我们无法更改设计。 现在,我们有两台主服务器和DR。在DR服务器中,查询将在30秒内执行,因此没有超时问题。但在主服务器中,由于未知原因,它正在超时。有时在rs.next()中超时,有时在pstmt.executeQuery()中超时。 所有数据库索
- 查询时间:120秒
- 数据库:DB2
- 应用服务器:JBoss
- 框架:Struts2
rs.next()
中超时,有时在pstmt.executeQuery()中超时。
所有数据库索引、连接池等都已就位。解释计划显示,也没有完整的表扫描
我的分析:
由于查询不是这里的问题,所以可能存在网络延迟问题?
如何获取此超时背后的根本原因。如何确保没有连接泄漏?(因为所有连接都已正确关闭)。
是否有任何方法可以从超时中恢复并再次使用增加的超时值执行查询,例如:pstmt.setQueryTimeOut(600)
?我假设Primary和DR具有大致相同的硬件和表大小?主服务器上正在进行什么样的其他工作(大量其他连接等)?如果这是只读查询,是否使用事务?如果网络连接本身超时,db应该抛出一个不同的错误(或者,您的驱动程序应该)。您可能需要发布您的查询/应用程序代码。是的,两者或多或少具有相同的硬件/软件配置。还有很多其他应用程序也在访问这个特定的数据库。是的,这是一个只读查询(我将尝试粘贴查询的框架,因为它是一个安全的应用程序,我不想把事情弄得一团糟,公开确切的查询:))此外,为了获得数据库连接,我们正在使用我们自己的数据库管理器框架,该框架应该处理所有打开和关闭连接的操作。