我正在使用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 位上运行它们。
利用操作系统和其他应用程序的额外内存。
还将 {$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 工具网站