数据库
首页 > 数据库> > sql server查询从java运行缓慢

sql server查询从java运行缓慢

作者:互联网

我有一个java程序,它对sql server数据库运行一堆查询.第一个是对视图进行查询,返回大约750k条记录.我可以通过sql server management studio运行查询,并在大约30秒内得到结果.但是,我昨晚启动了该计划.当我今天早上检查它时,这个查询仍然没有将结果返回到java程序,大约15个小时后.

我可以访问数据库来执行我想要的任何操作,但我真的不确定如何开始调试它.应该怎么做才能找出造成这种情况的原因?我不是一个dba,并且我对sql server工具集并不熟悉,所以你可以给我更多关于如何做你可能建议的细节,我将不胜感激.

继承人的代码

stmt = connection.createStatement();
clientFeedRS = stmt.executeQuery(StringBuffer.toString());

EDIT1:

好吧已经有一段时间了,而且这种情况有所不同,但这个问题又回来了.我考虑从jdbc驱动程序v 1.2升级到2.0,但是我们仍然坚持使用jdk 1.4,而v 2.0需要jdk 1.5,所以这是一个非首发.现在我正在查看我的连接字符串属性.我看到2可能有用.

SelectMethod=cursor|direct
responseBuffering=adaptive|full

目前,由于延迟问题,我使用cursor作为selectMethod运行,并且responseBuffering的默认值已满.改变这些属性可能会有所帮助吗?如果是这样,那么理想的设置是什么?我在想,根据我在网上找到的内容,使用直接选择方法和自适应响应缓冲可能会解决我的问题.有什么想法吗?

EDIT2:

我是否结束了这两个连接字符串参数的更改,使用默认的select方法(直接)并将responseBuffering指定为自适应.这最终对我来说是最好的,并减轻了我看到的延迟问题.感谢所有的帮助.

解决方法:

确保将JDBC驱动程序配置为使用直接连接而不是基于cusror的连接.如果您不确定,可以发布JDBC连接URL.

确保您使用的是只进,只读结果集(如果您未设置,则这是默认设置).

并确保您使用更新的JDBC驱动程序.

如果所有这些都不起作用,那么您应该查看sql profiler并尝试捕获sql查询,因为jdbc驱动程序执行该语句,并在管理工作室中运行该语句,看看是否存在差异.

此外,由于您正在提取如此多的数据,因此您应该尝试确保JVM上没有任何内存/垃圾收集速度减慢(尽管在这种情况下并不能真正解释时间差异).

标签:java,jdbc,connection-string,sql-server-2005
来源: https://codeday.me/bug/20190930/1836188.html