我有一个 java 程序,它对 sql server 数据库运行一堆查询。其中第一个查询视图返回大约 750k 条记录。我可以通过 sql server management studio 运行查询,大约 30 秒就可以得到结果。但是,我昨晚启动了程序运行。当我今天早上检查它时,大约 15 个小时后,这个查询仍然没有将结果返回给 java 程序。
我可以访问数据库来做任何我想做的事情,但我真的不确定如何开始调试它。应该怎么做才能弄清楚是什么导致了这种情况?我不是 dba,对 sql server 工具集也不是很熟悉,所以如果您能提供更多关于如何执行您可能建议的操作的详细信息,我们将不胜感激。
这是代码
stmt = connection.createStatement();
clientFeedRS = stmt.executeQuery(StringBuffer.toString());
编辑1:
好吧,已经有一段时间了,这被转移了,但是这个问题又回来了。我考虑从 jdbc 驱动程序 v 1.2 升级到 2.0,但我们被困在 jdk 1.4 上,而 v 2.0 需要 jdk 1.5,所以这不是入门。现在我正在查看我的连接字符串属性。我看到 2 可能有用。
SelectMethod=cursor|direct
responseBuffering=adaptive|full
目前,由于延迟问题,我使用光标作为 selectMethod 运行,并且默认的 responseBuffering 已满。更改这些属性可能会有所帮助吗?如果是这样,理想的设置是什么?根据我在网上可以找到的内容,我在想,使用直接选择方法和自适应响应缓冲可能会解决我的问题。有什么想法吗?
编辑2:
好吧,我结束了更改这两个连接字符串参数,使用默认选择方法(直接)并将 responseBuffering 指定为自适应。这最终对我来说效果最好,并缓解了我看到的延迟问题。感谢所有的帮助。