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上顯示結果,所以我需要同時在內存中的所有對象,也現在給出示例代碼 –