1 日あたり 50 万件のレコードがあり、各レコードは最大 500 バイトで構成されており、1 年間のレコードを分析する必要があります。プロセスを高速化するには、すべてのレコードを一度にロードする方がよいでしょうが、最大 88 GB のメモリが必要になるため、それはできません。レコード数は将来的に超える可能性があります。
別のアプローチは、これらのレコードをグループとして分析し、25000 のグループがあり、それを超える可能性があるため、これらのレコードをグループごとにロードすることでした。
一度に 1 つのグループをロードし、グループを分析し、破棄して別のグループをロードすることができます....しかし、これは非常に遅いプロセスになり、データベース サーバーに 25000 回アクセスします!!!. メモリでデータを使用できるシングル スレッド プロセスは、データベースへのトリップを伴うマルチスレッド プロセス (スレッド数 32) よりもはるかに高速です。
この膨大なデータの読み込みを処理し、ノーを最小限に抑えることができるアプローチはありますか? データベースへの旅行の数または使用可能なメモリを超えるサイズのコレクションをロードするか、データのオンデマンドロードをラップできるライブラリ(部分コレクション)?