gpt4 book ai didi

Java 1.6 和 Oracle JDBC 14 setQueryTimeout 不工作

转载 作者:搜寻专家 更新时间:2023-10-30 22:15:29 25 4
gpt4 key购买 nike

我们运行 Java 1.6 并使用最新的 ojdbc14.jar。我们连接到远程 Oracle 数据库。我们希望设置 QueryTimeout,因为查询完成的时间不得超过 2 分钟。

我这样做了:

  statement = conn.prepareCall(call);
statement.setQueryTimeout(120);
statement.executeQuery();

大约 8 分钟后,它最终超时了!有什么想法或解决方法吗?一如既往,非常感谢您的帮助!

编辑:我们使用瘦驱动

最佳答案

查看查询超时如何在 Oracle JDBC 驱动程序中工作:https://forums.oracle.com/forums/thread.jspa?threadID=550257

长话短说:

  1. 当超时到期时,需要一个完整的数据库往返才能取消 SQL 执行。数据库会在需要时着手处理取消请求。
  2. 驱动程序超时机制不是一种高精度机制。由于实际上取消执行需要通过网络与数据库对话,因此让驱动程序变得 super 精确是没有意义的。即使驱动程序是精确的,网络延迟和数据库响应取消请求所需的时间也会抵消驱动程序的精度。因此,超时是驱动程序在向服务器发送取消之前给予 SQL 执行的最短时间。

关于Java 1.6 和 Oracle JDBC 14 setQueryTimeout 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13645464/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com