4

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

你能告诉我内存管理TClientDataset之间的区别吗?TDataSet

4

1 回答 1

-1

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

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

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

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

试试Delphi 最好的内存管理器

还将 {$SetPEFlags IMAGE_FILE_LARGE_ADDRESS_AWARE} 放在你项目的源代码中,以便在 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 工具网站

于 2013-04-04T09:52:18.853 回答