さて、私はしばらくASP.NETプロジェクトに取り組んできましたが、プロジェクトが含まれるデータの点でどんどん大きくなっているので、私を悩ませているいくつかの悪いデザインの選択をしたようです。
.NETメモリ管理について読んだ後、私は潜在的な理由のすべてのセットを特定したと思います。私がやっていることは特に特別なことではないので、私がやりたいことを達成するための標準的なパターンが欠けているのではないかと思います。
したがって、1から20000の結果を生成する(やや高価なクエリ)があります。以降のリクエストでは、結果セットをページングしている可能性があるため、この結果をセッションに保存します。セッションはInProcです。不思議なんだけど:
a)結果を保存するb)セッションにc)処理中に保存することは理にかなっていますか?(a)の速度が欲しいです。ユーザーが保存するよりも効率的な方法があるかどうか(b)、より洗練された状態サーバーを使用する場合は、遅くなりませんか(c)?または、セッションが期限切れになるまで最後の結果セットをRAMに保持するのではなく、これらの大きなオブジェクトをより迅速に破棄するという解決策でしょうか?
〜20000行を超える結果セットがLOHを台無しにする可能性がある場合、それを回避する一般的な方法はありますか?
私はこの質問が少し過小評価されていることを知っています。全体的な設計に欠陥がある可能性があることに気づきました(スケーラビリティーに関して)。そして、どれだけ欠陥があるかを正確に見積もろうとしています。それにもかかわらず、これを一般的に有用な質問に変える標準パターンに関するいくつかのヒントが収集されることを願っています。