首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TClientDataSet与内存限制

TClientDataSet与内存限制
EN

Stack Overflow用户
提问于 2013-11-04 12:50:40
回答 4查看 3.8K关注 0票数 2

我们有一个系统可以根据我们的数据创建报告。我们可以处理很多数据。超过15万行的想法并不是不可能的。

不幸的是,我们使用TClientDataSet的经验是它的局限性,因为当数据变得太大时,它常常导致“内存不足”的错误。

因此,问题是:是否存在一个通用的TDataSet实现,可以处理大量数据(例如直接流到文件,而不将整个数据集保存在内存中)?

我愿意亲自实施这样一个课程。但据我所知,在将数据保存到文件/流之前,它需要能够包含数据本身。此外,再次加载数据也应该可以作为流,而不是加载到整个TClientDataSet对象中,因为这样我们就无法解决这个问题。

EN

回答 4

Stack Overflow用户

发布于 2013-11-04 13:32:35

您可以在FireBird中使用嵌入式模式或Interbase。

票数 4
EN

Stack Overflow用户

发布于 2013-11-04 15:35:46

在报告之前,是否真的需要缓存客户端上的所有数据?如果不是,也许可以重新考虑如何查询和处理数据来生成这些报告,看看是否有一种方法可以减少客户端数据(这会带来更少的通过网络传输的数据)。

如果您以前曾经走过这条路,并且确实需要所有这些数据客户端,那么您可以查看自定义数据结构。记录的TList<T> (即使您需要构建自己的索引)比TClientDataSet占用的内存少得多。

票数 1
EN

Stack Overflow用户

发布于 2013-11-04 16:32:35

KBMMemTable是TClientDataset的一个很好的替代方案

http://www.components4programmers.com/products/kbmmemtable/

我们已经用了很多年了,它非常有用,而且速度很快。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19768078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档