どうもこんにちは。プログラマの田中智大です。 3月にもなり、朝起きるときに布団から出たくないレベルの寒さは徐々になくなってきたところから、春が近づいているのを感じます。 今回はSQLDatabase から大量のレコードを EntityFramwork を使って取得した時に、どんな事が起きるかについて説明したいと思います。 わかりやすくするため、実際に値を置いて説明していきましょう。 DBには 100万のレコードがあり、何回か全データを使う事があるため、何度もDBから全件取得をしないように、ToList()を使ってそれらを全件取得します。 1つのレコードはだいたい 300バイトほどのデータがある場合、メモリは 300MB ほどしか使わないから大丈夫だと思われるでしょうが、 いざ EntityFramework でデータを取得したところ、 メモリが 1GB近くも使われている 事が分かりました。