私は数百万のレコードを持つテーブルを持つデータベースを持っています。私はspring jpaを使用してデータベースにアクセスしています。今私はそのテーブル上でfindAll()を使用しようとすると、メモリエラーが発生しています。そのテーブルのサイズは約150MBです。私はjvmに1GBのヒープを与えました。私の質問は、ヒープメモリを消費する理由です。 これが正しい方法でない場合は、ページネーションとガベージコレクタを呼び出す必要があります。Javaで巨大なdbテーブルを読む最良の方法
0
A
答えて
1
一度にすべてのレコードを取得しないで、すべての値をチャンク内で取得すると、メモリ不足の問題が解消されます。 Spring-data- *モジュールは、あなたが効果的にそれを行うのに役立ちます。パラメータとしてページを渡してデータを取得できます。
達成するサンプルはfindAllです。これはパラメータとしてページング可能なページを返します。
0
バネデータモジュールは、ページネーションを使用して大きな結果セットを処理する簡単な方法です。
時間単位で結果セットのチャンクだけを表示する必要がある場合は、春のページネーションで十分です。
あなたは、全体の結果セット(tipicallyログテーブル)を表示する必要がある場合よりも次のことができます。CursoredStream(EclipseLinkは)のような
- 使用JPAのベンダーの機能
- 使用JDBC ResultSet
この機能を使用すると、クエリを実行し、その結果をIteratorのように使用することができます(多かれ少なかれ)。
定義したfetchSizeに基づいて、結果セットのスクロール中にjvmメモリーが少しずつロードされます。
このメソッドを使用すると、すでにクライアントに送信されたレコードを破棄し、最新のメモリのみを維持することができます。
関連する問題
- 1. 巨大なテキストを読む
- 2. WCFで巨大なリクエストを処理する最良の方法
- 3. Javaでディスクに巨大な行列を書き込む最速の方法
- 4. 巨大なmysqlクエリをキャッシュする最良の方法は?
- 5. Cで巨大なTxtを読む
- 6. Javaで巨大なExcelファイル(500K行)を読む
- 7. Javaで巨大なZipファイルを読み込む - メモリ不足エラー
- 8. project_measuresテーブル最近巨大な成長方法、トリミング方法
- 9. Javaから巨大な.pdfファイルを読み込むための最高のAPI
- 10. Javaから角jsの巨大なデータを読む
- 11. Python:巨大なテキストファイルをメモリに読み込む方法
- 12. 巨大な.csvファイルを読む
- 13. 巨大なXML/GMLとXPathを読む
- 14. 大きなテキストファイルを読む方法 - Java
- 15. 巨大なmysqlテーブルの最適化
- 16. Java:ソースコードの巨大な巨獣をコンパイルする方法
- 17. C#の巨大なリストをフィルタリングする最もパフォーマンスの良い方法は?
- 18. テキストファイルで最後の行を読み込む最良の方法
- 19. PHP巨大なDB mysqlの中で最も速いクエリ
- 20. Delphiで巨大なファイルを読み込む最速の方法は何ですか?
- 21. Java:巨大レコードを読み取る方法(> 10k)
- 22. 巨大なテキストファイルの行を4のグループで読む
- 23. Googleマップのスタイルに巨大な画像を読み込む方法は?
- 24. ソケットの巨大なデータを読み取ってソケットチャネルに書き込む方法
- 25. neo4j java query DBで巨大なスローダウン> 32G
- 26. リストボックス(テーブル)の巨大なデータ
- 27. 巨大なテーブルのMySQLアップデート
- 28. Javaの比較的大きなバイトファイルを読み込む最速の方法
- 29. アンドロイド動的な設定を読み込む最良の方法
- 30. 巨大な画像データセットを保存して読み込む方法は?
私はこの方法でガベージコレクタを明示的に呼び出す必要がありますか? – user2784095
いいえ、私たちのメモリが大幅に増えていないので、jvmが処理します – rajadilipkolli