データベースから大量のデータを取得した場合、ColdFusion側でその処理に必要なメモリ量はデータベースから取得するデータ量の少なくとも2倍、またはそれ以上を見積もります。
例えば、<cfquery>を使用してデータベースからSELECTしたデータが100MBだった場合、データベースからJDBCドライバに渡されたデータ量の100MBに加えて、ドライバからColdFusionのメモリ(<cfquery>の結果としてname属性に指定した名前で保存されます)に格納するために少なくとも100MBのメモリが必要です。加えてColdFusionはJavaで動作し文字データは既定で Unicode として処理されるため、データベースに格納されていたデータがそれ以外の文字データだった場合はUnicodeに変換されることによってさらにサイズが増加することも考えられます。
下記のテックノートは、古い(MX 6)時代のシングルバイトの文字が格納されている場合を想定して書かれていますが、<cfquery>実行時の内部の処理の様子(ドライバに渡されたデータやColdFusionに変数として格納されたデータの開放のタイミングなど)などが参考になると思います。
http://www.adobe.com/jp/support/coldfusion/ts/documents/large_record_sets_oom.htm
記事公開日:2013年07月05日
最終更新日:2013年07月05日
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent suscipit iaculis libero sed tristique. Quisque mollis dolor non tellus placerat vitae sodales lectus porta. Curabitur ut suscipit tellus. Maecenas rhoncus, ante vitae vehicula vestibulum, metus sapien dapibus tellus, et mattis dolor neque vitae nisl. Nullam eleifend ultrices ipsum eget pretium. Curabitur semper metus ut ante adipiscing nec volutpat sem rutrum. Nullam a nisi lacus, non interdum ante. Vivamus ante augue, commodo vel egestas sed, pharetra nec dui. Quisque sed tellus felis. Donec ipsum mauris, sagittis eu accumsan in, aliquam non ipsum.
Vestibulum tempor nunc nec felis scelerisque eget elementum erat dignissim. Ut vel ipsum mollis orci venenatis luctus. Aenean vehicula quam vel quam porttitor ac iaculis elit pulvinar. Proin consequat, ipsum eu venenatis semper, justo turpis posuere tortor, ac placerat metus nisl et lectus. Nulla cursus dui id nunc ullamcorper sed semper nisl lobortis. Aliquam erat volutpat. Phasellus arcu ante, imperdiet in ornare sed, laoreet eu massa.