当我尝试使用java应用程序进行连接时,我的sql服务器面临性能问题。 sqljdbc4-4.0是我的驱动程序版本。看起来这是最新的。
当我使用带有set paramerter选项的PreparedStatemnt并且在特定次数的迭代之后循环通过结果集时,执行停止了5min并再次开始迭代时出现问题。这种停止在一些固定的迭代中发生。
即使是非常简单的查询,也会出现这种情况。
PreparedStatemnt ps = null;
ResultSet rs = null;
ps = con.prepareStatemnt("select id,name,phone from Table1 where name = ?");
ps.setString(1, "Raj");
rs = ps.executeQuery(); // OK here
int i=0;
while(rs.next()){ // hangs here
System.out.println(i++);
}
但是,如果我没有设置参数并将参数连接到这样的查询,它可以正常工作,
PreparedStatemnt ps = null;
ResultSet rs = null;
ps = con.prepareStatemnt("select id,name,phone from Table1 where name = 'Bob' ");
rs = ps.executeQuery(); // OK here
int i=0;
while(rs.next()){ // OK now
System.out.println(i++);
}
当我使用没有where条件的查询时,它完全没有挂起。
这告诉我,当我使用set参数选项时会出现问题。我试图使用顶行来查看问题是否与大量行有关。但即使我用100设置顶部。对于这100行本身,迭代在第28次迭代和第66次迭代时停止了2次。我认为它挂起的迭代取决于列数的大小。
可以帮助我解决这个问题。
先谢谢, SYAM。
答案 0 :(得分:0)
你的数据库中有更多,更多的Rajs而不是Bobs。
它与您是否使用PreparedStatement
参数无关。