TIBDataSet
Delphi 2007を使用してFirebirdデータベーステーブルからレコードをフェッチするために使用しています。そのテーブルには約100万のレコードがあり、エラーOut of memory
が発生します。ただし、同じクエリが正しく実行されTClientDataset
ます。
メモリ管理とメモリ管理の違いを教えてくださいTClientDataset
。TDataSet
TIBDataSet
Delphi 2007を使用してFirebirdデータベーステーブルからレコードをフェッチするために使用しています。そのテーブルには約100万のレコードがあり、エラーOut of memory
が発生します。ただし、同じクエリが正しく実行されTClientDataset
ます。
メモリ管理とメモリ管理の違いを教えてくださいTClientDataset
。TDataSet
@alzaimar にはポイントがあります。32 ビット プラットフォームのメモリに読み込まれる何百万ものレコードは、使用するデータセット コンポーネントが何であれ、課題になるでしょう。
そのため、ボックスのメモリは非常に重要です。
Delphi 2006 で作成されたアプリケーションでも同様のことを行います。Windows7 64 ビットまたはサーバー 2008 64 ビットでそれらを実行します。
OS やその他のアプリケーション用に追加メモリを活用します。
また、{$SetPEFlags IMAGE_FILE_LARGE_ADDRESS_AWARE} を yur プロジェクトのソースに配置して、64 ビット ボックスで 32 ビット Delphi から最大 4 GB を取得します。
program Project15;
uses
Forms,
Unit15 in 'Unit15.pas' {Form15};
{$R *.res}
{$SetPEFlags IMAGE_FILE_LARGE_ADDRESS_AWARE}
begin
Application.Initialize;
Application.CreateForm(TForm15, Form15);
Application.Run;
end.
上記を実行すると、アプリケーションの TDataSet または TClientDatset にどちらが最適かがわかります。
また、基本的な Delphi データ オブジェクトよりもパフォーマンスとメモリ管理が改善された、サード パーティのデータ接続コンポーネントの使用を検討することもできます。
私たちは Devart コンポーネントと SQL ツールを使用していますが、それらは本当にお金に見合う価値があります。Devart Data ツールの Web サイト