なぜデータベースの結果セットがそれほど大きいのですか?私は通常、結果セットを取得します。その結果は、100万行におよぶものです。それぞれに2つの数値、varchar(75)、大きな整数などが含まれています。たぶん行ごとに100バイトを超えることはありません。それでも6GB必要です!これは典型的な動作ですか?私のスタックはPostgres + JDBC + Springです。私は他の技術を経験していません。なぜ結果セットが大きいのですか?
0
A
答えて
1
2
java.sql.ResultSet
は、通常、いつでも数十列のデータしかバッファリングできません(設定可能)。
これらすべての行をJavaオブジェクトとしてメモリにロードすると、大量のメモリが使用されます。たとえば、String
には、1つのcharあたり2バイト、2つのオブジェクトヘッダー、オフセット、2つの長さ、およびキャッシュされたハッシュ値があります。 BigInteger
も同様です。それはすべて追加されます。プロファイラを使用します。
キャッシュされた行セットを使用したほうがよい場合があります。それは、一度に結果のセット全体をロードするか、ロードしません。
関連する問題
- 1. 大きな結果セットのデータ転送が遅い
- 2. WCFから大きなコレクション結果セットを返す
- 3. mysql selectクエリの結果セットが大きい
- 4. NHibernateで大きな結果セットを処理する
- 5. mysqli executeは大きな結果セットでfalseを返します
- 6. JDBCの大きなフェッチサイズと小さな結果セットのパフォーマンス
- 7. なぜezSQLは空の結果セットを返すのですか
- 8. jdbcで大きな結果セットを読み取る
- 9. 結果セットを実行しているときに結果セット
- 10. PHPが大きなSQL結果セットから変数を取得する
- 11. rmongodbを使用して大きな結果セットを高速化
- 12. なぜ結果オブジェクトを変更できないのですか
- 13. Toadの結果のデータが大きい -
- 14. laravelでキャッシュ/ redisに大きな結果セットを保存する5
- 15. googleの大きな質問で大きな結果を許可
- 16. WMIがManagementObjectCollectionで完全な結果セットを返さないのはなぜですか?
- 17. ストアドプロシージャは結果セットを返すことができますか?
- 18. なぜ大数の素数のチェック結果が間違っていますか?
- 19. 検索結果がページのエンコードと同じ文字セットでないのはなぜですか?
- 20. 既存の結果セットに結果セットを追加する
- 21. runnableFuture結果セット
- 22. なぜ結果が共有されないのですか?
- 23. 大きな結果セットを返すSQLiteクエリに時間がかかりますか?
- 24. デシジョンツリーの結果セット
- 25. Powershellの結果セットがC#で取得されない
- 26. 大きな結果を表すのはどのソリューションですか?
- 27. このSQLはなぜ不正な結果セットを返しますか?
- 28. 結果セット全体を取得しないJSPページネーションですか?
- 29. データベースから膨大な結果セットをロードするときにerrcode 28が表示されるのはなぜですか?
- 30. Cosmos DBの結果がより大きい検索で見つからない
あなたは、誰かがあなたに良い答えを与えるためのあなたの全体の質問に、より具体的にしなければならないでしょう。 "何でも"はどういう意味ですか? "おそらく" 100B/rowをそれほど超えないだろうか?実際の数学を行い、あなたの質問をしてください。 –
DBテーブル全体をJavaのメモリにコピーする理由は何ですか?あなたが達成しようとしているものに対してはるかに良い解決策があるかもしれません。たとえば、バッチ単位または行単位での処理、ページ単位のビューでの表示などです。 – BalusC
どのように「6 GBを要する」と測定していますか? –