TDataSet和TClientDataset内存管理有什么区别?

时间:2012-12-26 07:32:33

标签: delphi firebird delphi-2007 tclientdataset

我正在使用TIBDataSet使用Delphi 2007从Firebird数据库表中获取记录。该表中有大约100万条记录,我收到Out of memory错误。相同的查询可以使用TClientDataset正确运行。

请告诉我TClientDatasetTDataSet关于内存管理的区别?

1 个答案:

答案 0 :(得分:-1)

@alzaimar有一个观点,无论你使用什么数据集组件,在32位平台上加载到内存中的数百万条记录将是一个挑战。

所以盒子上的内存至关重要。

我们使用Delphi 2006编写的应用程序执行类似的操作。我们所做的是在Windows7 64位或服务器2008 64位上运行它们。

利用操作系统和其他应用程序的附加内存。

尝试The best memory manager for Delphi

还将{$ SetPEFlags IMAGE_FILE_LARGE_ADDRESS_AWARE}放在yur项目的源代码中,以便从64位盒子上的32位delphi中获得4GB。

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 tools website