VC中使用ADO的问题

zxdlms 2007-04-10 08:13:52
用ADO访问Access数据库,为什么把Recordset的CursorLocation属性设成adUseClient和adUseServer时,数据库的存储速度相差那么大啊。

设成aduseclient时,存四万条数据要将近三分中,而设成aduseserver时只需要十几秒。

哪个高手能够详细介绍一下这个属性吗,应该怎么选择呢。

看了好几本书上的介绍都是直接翻译的msdn的,看了也没什么长进。
...全文
453 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zxdlms 2007-04-20
  • 打赏
  • 举报
回复
能不能主要回答一下,怎么用aduseClient比用aduseServer慢那么多啊??
Skyme 2007-04-20
  • 打赏
  • 举报
回复
我今天弄从数据库里读binary 数据头都大了.没有读出来.....
尘雨 2007-04-19
  • 打赏
  • 举报
回复
你可以先看一下上面的描述,

至于性能问题,并非服务端游标适合所有的场景
对于select 得到的结果集的处理,比如遍历结果集等等,客户端游标还是有很大优势

尘雨 2007-04-19
  • 打赏
  • 举报
回复
游标位置的重要性
每个游标都使用临时资源来持有其数据。这些资源可以是内存、磁盘分页文件、临时磁盘文件,甚至是数据库中的临时存储区。当这些资源位于客户端计算机上时,游标称为“客户端”游标。当这些资源位于服务器上时,游标称为“服务器端”游标。

客户端游标
在 ADO 中,通过使用 adUseClient CursorLocationEnum 来调用客户端游标。利用非键集的客户端游标,服务器将整个结果集通过网络发送给客户端计算机。客户端计算机提供并管理游标和结果集所需要的临时资源。客户端应用程序可以浏览整个结果集,以确定它需要哪些行。

如果静态的和键集驱动的客户端游标包括的行数太多,那么,这些游标可能给工作站带来较沉重的负载。由于所有游标库都能够生成包含数千行的游标,所以,为获取大量行集而设计的应用程序有可能性能不佳。当然,也会有例外。对于某些应用程序来说,大型客户端游标可能完美好用,并且性能可能不成问题。

客户端游标的一个显然的好处是快速响应能力。结果集已下载到客户端计算机之后,浏览所有行的速度会非常快。一般来说,如果使用客户端游标,应用程序的可伸缩性更好,这是因为游标对资源的需求由每个单独的客户端而不是服务器来解决。

服务器端游标
在 ADO 中,通过使用 adUseServer CursorLocationEnum 来调用服务器端游标。通过服务器端游标,服务器使用由服务器计算机所提供的资源来管理结果集。服务器端游标只通过网络返回所请求的数据。该类型的游标有时可以提供比客户端游标更好的性能,尤其是存在过度拥挤的网络通信问题时。

但必须指出的是,对于每个活动客户端来说,服务器端游标很容易耗费宝贵的服务器资源(至少目前是这样)。因此,必须相应地进行计划,确保服务器硬件能够管理活动客户端所请求的所有服务器端游标。另外,服务器端游标速度缓慢,因为它只提供单行访问,就是说,没有批游标可用。

当插入、更新或删除记录时,服务器端游标是有用的。使用服务器端游标,在同一个连接上就可以有多个活动语句。
zxdlms 2007-04-19
  • 打赏
  • 举报
回复
这么说应该是用aduseClient快一些啊!!

怎么用aduseClient比用aduseServer慢那么多啊!

Access 好像不存在什么服务器吧,那应该怎么设置呢。
zxdlms 2007-04-18
  • 打赏
  • 举报
回复
自己顶一下!!

4,012

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧