PostgreSQL で非常に大きなテーブル (300GB) からレポートを事前に生成しようとしています。私はこのようなことをします:
rs = stmt.executeQuery("SELECT * FROM tbl");
System.out.println("select all finished");
while (rs.next()) {
/* generate report and save it in report table */
/* generated reports are not in memory,
* They are saved in a summary table in each iteration */
}
アプリケーションを起動すると、Exception in thread "main" java.lang.OutOfMemoryError: Java heap space. 使用してみましたstmt.setFetchSize(1000)が、問題は解決しません。
解決策は何ですか?Debian 6.0.5 および openJDK 6 で PostgreSQL 8.4.11 を使用しています。
[アップデート]
出力されたスタック トレースは、OutOfMemoryError例外がrs = stmt.executeQuery("SELECT * FROM tbl");インラインで生成されたことを示しています。またSystem.out.println("select all finished");、表示されることはありません。
- モードで走ってい
autocommitます。 stmt.getResultSetConcurrency()1007 を返します。stmt.getResultSetHoldability()2を返します。rs.getType()1003 を返します。