优化ADO的执行效率

转载 2004年07月22日 17:12:00

优化ADO的执行效率

 

  下面是使用ADO时程序员应该知道的规则。只要程序员了解并且适当地使用
在应用系统中,那么让ADO和ADOExpress拥有良好的执行效率并不是困难的事情:

1) 尽量找到真正的原生ADO和OLE DB驱动程序。尽量不要使用ADO For ODBC驱动程序,
   因为这种架构使用在一些数据库时会发生不正常的执行状况,也比原生ADO和OLE DB
   驱动程序来得慢一些。

2) ADO驱动程序的品质大大地影响了应用系统的执行效率,因此,你应该为你的数据库找
   一个良好的ADO驱动程序。

3) 尽量使用客户端的Cursor Location,并且只存取应用程序真正需要的数据到客户端,
   使用少量、多次的方式存取数据。使用少量、多次的方式存取数据不管是对于主从架构
   或分布式多层应用系统都是很好的方式。特别是对于Internet/Intranet和电子商务应用
   系统来说,使用这种方式可以确保应用系统能够在许多用户同时使用的状况下仍然保有
   合理的执行速度。

4) 适当设定CacheSize属性值。这是一个绝对不可忽略的设定,它的重要性仅次于
   Cursor Location。虽然在前面讨论的内容中我们可以发现设定CacheSize接近
   1000左右可以得到最好的效率/空间比,但是必须考虑当应用系统同时被许多用户
   同时存取时,在一瞬间网络会传递的数据量有多大。因此你可能必须根据你的应
   用系统的执行状况来适当地减少CacheSize为100 ~ 1000之间的数值。

5) 许多讨论如何优化ADO的文件都会建议使用存储过程,因为这些文件都假
   设你只会使用MS SQL Server。但是不管使用什么数据库,如果可以的话,那么对
   于需要处理大量数据的工作,使用存储过程绝对可以增加ADO应用程序的执行效
   率。因为在这种情形下,存储过程可以让这些大量的数据不传递到客户端,而是
   直接在数据库中处理数据,这可以避免造成网络严重的负荷。即使你不想使用存
   储过程,因为你可能会使用不同的数据库,对于一些经常会执行的工作,至少也
   应该使用Prepared ADO/ ADOExpress组件,这样也可以增加应用程序的执行效率。

6) 对于不会回传结果数据集的工作,例如使用Update、Delete等修改大量数据
   的工作,可以考虑结合存储过程和ADO的异步执行模式。这样可以大大增加ADO
   应用程序的执行效率以及减少ADO应用程序的反应时间。

7) ADO的Recordset对象,或ADOExpress的TADODataSet、TADOQuery和
   TADOTable组件虽然都可以使用Select的SQL命令存取数据,并且让用户修改数据
   再更新回数据源中。但是,如果你正在开发的ADO应用程序会执行大量的数据修
   改的工作,那么你应该使用数个不同的TADODataSet、TADOQuery和TADOTable
   组件。其中一个用来选取用户需要的数据,并且使用其他的TADODataSet,
   TADOQuery和TADOTable组件来执行Update和Delete等的SQL命令,这样可以增加
   ADO应用程序的执行效率。

8) 本项和第7项有关,即当你使用ADO开发分布式多层应用系统时,尽量设
   定TDataSetProvider组件的Resolve To DataSet为True。让ADO本身来处理数据的修
   改,而不要使用MIDAS的SQL Resolver,因为ADO可以更好地处理数据修改的数
   据。但是请注意,由于ADOExpress目前有一个臭虫,因此在分布式多层应用系统
   中不要使用TADODataSet、TADOQuery和TADOTable组件来执行Update和Delete
   等的SQL命令。请直接使用执行Select SQL命令的TADODataSet、TADOQuery和
   TADOTable组件来执行修改数据的工作。

9) 尽量使用Optimistic和BatchOptimistic这两种类型的LockType,因为它们不
   但会降低系统锁定的资源,也可以增加ADO应用程序的执行效率。

10) ADO的Batch Update模式和BDE/IDAPI的CacheUpdate非常类似,不管是
    用在主从架构或Internet/Intranet及电子商务应用系统中都可以增加ADO应用程序
    的执行效率。因此程序员应该尽量使用这种模式来开发ADO应用程序。

11) TADODataSet、TADOQuery和TADOTable组件的MarshalOptions控制了客
    户端修改的数据如何传递回OLE DB Provider或数据源进行更新的工作。在分布式
    多层应用系统和Internet/Intranet及电子商务应用系统中我们绝对不希望传递任何多
    余的数据,以避免浪费网络资源。因此适当地设定MarshalOptions属性值为
    moMarshalModifiedOnly也可以增加应用系统的执行效率。

12) 对于和图形用户接口有关的ADO应用程序,例如,如果需要在TDBGrid组
    件中显示大量的数据,那么不要忘记我们早已熟知的技巧,暂时关闭数据感知组
    件和ADO存取组件之间的关系,等待数据存取的工作完成之后再启动连接,那么
    将可以大大增加图形用户接口响应用户的效率。这就是说,当应用程序要结合大
    量数据存取和图形用户接口时,不要忘记调用Disable Controls和Enable Controls这
    两个方法。

 

ADO对象模型总结

ADO 简介 ActiveX data Object (取代 dao 和rdo) 通过 OLE DB 实现不同类型数据源的访问  有三种类型  数据提供者:将特殊数据转化成关系型数据表  数据消费者 ...
  • cJune
  • cJune
  • 2016年05月08日 19:26
  • 1695

ADO读取Excel的简单例子

一、简单说明: 工程名字ADO_Excel,类型是console app, 非empty有预编译头stdafx.h。 编译说明: 1.确保C盘下面路径有msado15.dll,没有安装office2...
  • Blues1021
  • Blues1021
  • 2015年02月04日 12:14
  • 6059

VS与MySQL通过ADO方式连接

1.下载好MySQL之后,安装开发员的版本,用命令行在数据库test下建立表st并插入了两条记录,然后OBDC添加用户、系统DSN 驱动程序是MySQL OBDC 5.3 ANSI Driver ...
  • BCD_not_CBD
  • BCD_not_CBD
  • 2015年08月29日 08:45
  • 744

Windows下C++访问数据库(ADO)

C++利用ADO访问数据库还是比较方便的,我参考网上其它资料把ADO到一个类中,这样调用起来会更加的方便 这个类单线程访问数据库没有问题,提供了查询、增加、删除和修改的接口。 并行访问的话会有...
  • luke2834
  • luke2834
  • 2015年08月19日 12:07
  • 1837

Delphi下的原生ADO使用方法

本文向您揭示在Delphi中使用ADO是如何轻而易举,结合了ADO的Delphi应用程序,将不再依赖于BDE。 ADO的精髓在于利用简单的COM指令来快速方便的访问ODBC数据源,微软的表格、...
  • Hmillet
  • Hmillet
  • 2016年03月30日 09:55
  • 2444

ODBC、OLEDB和ADO之间的关系

学习了.net视频之后,对里面涉及到的数据库连接部分中的一些概念
  • wangyy130
  • wangyy130
  • 2014年05月26日 19:45
  • 1790

用ADO操作数据库的方法步骤

学习ADO时总结的一些经验     用ADO操作数据库的方法步骤   ADO接口简介 ADO库包含三个基本接口:_ConnectionPtr接口、_CommandPtr接口和_RecordsetPtr...
  • gongluck93
  • gongluck93
  • 2016年09月19日 10:33
  • 2712

ADO和ADO.NET的区别

ADO.NET是ADO的后继版本,主要目的是在.NET Framework中更容易地创建分布式、 数据共享的应用程序,它提供了一个数据访问接口,以便和OLE DB数据源进行通信,如 SQL S...
  • ZHOUCHAOQIANG
  • ZHOUCHAOQIANG
  • 2014年04月30日 10:11
  • 4134

C++使用ADO2数据库类查询、添加、修改、删除操作

在工程中添加ado2.h、ado2.cpp两个文件 如果项目之前在XP在编译,在换到WINDOWS7编译时可能会出错,这是因为msado15.dll和MSJRO.DLL版本的问题。 XP ...
  • bingo1191683228
  • bingo1191683228
  • 2015年05月05日 16:08
  • 1119

【VBA研究】使用ADO组件的两种方式----引用法和创建法

作者:iamlaosong 1、引用法      引用ADO相关组件:打开VBA编辑器,在菜单中点选“工具”--》“引用”。确保“Microsoft ActiviteX Data Objects 2....
  • iamlaosong
  • iamlaosong
  • 2015年04月17日 14:27
  • 2921
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:优化ADO的执行效率
举报原因:
原因补充:

(最多只允许输入30个字)