首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在生成ADO记录集时,是否将数据拉入内存?

在生成ADO记录集时,是否将数据拉入内存?
EN

Stack Overflow用户
提问于 2011-11-02 20:46:50
回答 2查看 601关注 0票数 1

我一直在从事一个相当大的C++项目,该项目出人意料地使用MS Access 97作为其底层数据库引擎。我注意到代码中有很多从查询创建记录集的实例,这些查询可能会返回超过100,000条记录。

我很好奇,当您构建记录集时,ADO是否会将所有数据都拉到内存中,或者当您试图从记录集中读取数据时,ADO是否更智能,并且只能“及时”加载数据?我们收到了很多来自客户的性能投诉,这在我看来是可疑的内疚。

(迁移到较新的数据库引擎在我们的路线图上。相信我,团队中没有人对访问权限感到满意)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-02 21:09:44

在这里使用Access访问数据库有几个问题:

  1. 假设它支持255个并发用户,实际上6到20个是最大数量,随着数据库大小/复杂性的增加,连接数量会减少。
  2. 数据库大小和
  3. 的2 2Gb限制是的,数据缓存在本地,所以如果您有5000个结果,那么您只能接受它们:)
票数 1
EN

Stack Overflow用户

发布于 2011-11-02 21:58:59

我很好奇,当您构建记录集时,ADO是否会将所有数据都拉到内存中,或者当您试图从记录集中读取数据时,ADO是否更智能,并且只能“及时”加载数据?

也许异步获取行可以改善您的用户体验。请参阅可与ADO Recordset Open Method一起使用的ExecuteOptionEnum中的选项。我怀疑这是你心目中的“及时”,但这是我能提供的最好的了。

在我看来,更好的设计是修改查询,只检索100K行中的一部分。那么“及时”可以变成“让用户请求下一个子集”。而且,您应该能够从具有合理大小的记录集的访问中获得良好的性能。

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

https://stackoverflow.com/questions/7980539

复制
相关文章

相似问题

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