har*_*der 3 java spring jdbc jdbctemplate
我有一个使用 Spring 的数据库获取调用jdbcTemplate,要获取的行数约为 100 万。在结果集中迭代需要太多时间。调试行为后,我发现它像批处理一样处理一些行,然后等待一段时间,然后再次获取一批行并处理它们。行处理似乎不是连续的,因此总时间将持续几分钟。我使用了数据源的默认配置。请帮忙。
[编辑]
这是一些示例代码
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;
}
});
Run Code Online (Sandbox Code Playgroud)
正如大多数评论告诉您的那样,在任何 UI 中显示一百万条记录都是无用且不现实的 - 如果这是真正的业务需求,您需要教育您的客户。
在此类场景中,网络流量应用程序和数据库服务器是性能的关键因素。在这种情况下,有一个可选参数可以真正帮助您:获取大小- 在某种程度上也是如此
例子 :
Connection connection = //get your connection
Statement statement = connection.createStatement();
statement.setFetchSize(1000); // configure the fetch size
Run Code Online (Sandbox Code Playgroud)
默认情况下,大多数 JDBC 数据库驱动程序的获取大小都很低,对此进行调整可以在这种情况下为您提供帮助。**但请注意**以下事项。
在春天,JdbcTemplate让您设置fetchSize
| 归档时间: |
|
| 查看次数: |
6661 次 |
| 最近记录: |