我将 JDBC 从 postgresql-9.2-1000.jar(PostgreSQL 9.2.1) 升级到 postgresql-42.5.0.jar(PostgreSQL 14.6),奇怪的事情发生了。 对于相同的查询,执行第四次或第九次后速度变慢。 (它不会发生在 postgresql-9.2-1000.jar(PostgreSQL 9.2.1))
例子:
public class JDBCExample3 {
public static void main(String[] args) throws SQLException {
Connection conn = DriverManager.getConnection("jdbc:postgresql://xxx.xxx.xxx.xxx:5432/testdb", "user",
"password");
String SQL = "select ...";
for (int i = 0; i < 10; i++) {
PreparedStatement pstmt = conn.prepareStatement(SQL);
//set parameters
pstmt.setString(0, "122344acbc");
// ...
// It's not slow with i from 0 to 8.
ResultSet rs = pstmt.executeQuery(); //When i = 9 (after ninth execution), It takes long time here. slow!!!
while (rs.next()) {
//get result
rs.getString("name");
//...
}
System.out.println("loop:" + i);
//close
rs.close();
rs = null;
pstmt.close();
pstmt = null;
}
conn.close();
System.out.println("end");
}
}
我正在尝试修复它。 这里postgresql-42.5.0.jar(PostgreSQL 14.6)需要注意什么?
我预计“pstmt.executeQuery()”在所有执行过程中花费了相同的时间。