0
我有一个数据库获取调用弹簧jdbcTemplate
和行取得大约100万。迭代结果集需要花费太多时间。在调试行为后,我发现它像批处理一样处理一些行,然后等待一段时间,然后再次处理一批行并处理它们。看起来行处理不是连续的,所以总体时间进入分钟。我已经使用数据源的默认配置。请帮忙。春季JDBC模板ROW映射器太慢
[编辑]
下面是一些示例代码
this.prestoJdbcTempate.query(query, new RowMapper<SomeObject>() {
@Override
public SomeObject mapRow(final ResultSet rs, final int rowNum) throws SQLException {
System.out.println(rowNum);
SomeObject obj = new SomeObject();
obj.setProp1(rs.getString(1));
obj.setProp2(rs.getString(2));
....
obj.setProp8(rs.getString(8));
return obj;
}
});
这需要时间来在网络上移动一个百万行。您看到的“批处理”实际上是驱动程序通过网络向其自己的缓冲区请求更多行。由于网络开销,连续执行它是没有意义的。 无论如何映射一百万行的想法是什么?你是否同时需要内存中的所有对象?同时显示你的代码。 – Kayaman
仅使用前向结果集。这对于获取这些数百万行很有用。还要将模式设置为只读。 –
@Kayaman我需要在UI上显示结果,所以我需要同时在内存中的所有对象,也现在给出示例代码 –