回答編集履歴
1
追記
answer
CHANGED
@@ -6,4 +6,16 @@
|
|
6
6
|
メモリーは有限であるのに、サイズを考慮せずに取得する方が問題です。
|
7
7
|
オンラインである場合は、件数制限を設けるのが普通ですし、バッチなどの場合は分割コミットなどで対応します。
|
8
8
|
|
9
|
-
取り敢えずは、select文 に **limit**を付けて、状況を確認してみて下さい。
|
9
|
+
取り敢えずは、select文 に **limit**を付けて、状況を確認してみて下さい。
|
10
|
+
|
11
|
+
追記
|
12
|
+
--
|
13
|
+
> fetchsizeを指定している場合でも元のDBの件数が増えた場合はメモリ使用量は増えるものなのでしょうか?
|
14
|
+
|
15
|
+
該当しているかどうかは分かりませんが、以下参考
|
16
|
+
[JDBC setFetchSize() ではまった話](https://www.techscore.com/blog/2019/02/27/jdbc-setfetchsize-%E3%81%A7%E3%81%AF%E3%81%BE%E3%81%A3%E3%81%9F%E8%A9%B1/)
|
17
|
+
|
18
|
+
> PostgreSQLの場合、setFetchSize() を使用することで暗黙的にカーソルが作成され、ResultSet#next()時に適宜、作成したカーソルを使用してデータがロードされます。
|
19
|
+
>
|
20
|
+
> ただし、トランザクション内でのみ上記挙動となります。トランザクション外の場合、とくにエラーなどなくクエリが実行されますが、全件ロードされてしまいます。
|
21
|
+
> 件数、搭載メモリ量によってOutOfMemoryErrorとなる可能性があります。
|