合理使用ADO的参数规则,优化其执行效率
- 2021-04-28 08:00:00
- 转贴:
- CSDN
- 14275
access在数据处理中,用得比较多要数是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这两个方法。
- office课程播放地址及课程明细
- Excel Word PPT Access VBA等Office技巧学习平台
- 将( .accdb) 文件格式数据库转换为早期版本(.mdb)的文件格式
- 将早期的数据库文件格式(.mdb)转换为 (.accdb) 文件格式
- KB5002984:配置 Jet Red Database Engine 数据库引擎和访问连接引擎以阻止对远程数据库的访问(remote table)
- Access 365 /Access 2019 数据库中哪些函数功能和属性被沙箱模式阻止(如未启动宏时)
- Access Runtime(运行时)最全的下载(2007 2010 2013 2016 2019 Access 365)
- Activex控件或Dll 在某些电脑无法正常注册的解决办法(regsvr32注册时卡住)
- office使用部分控件时提示“您没有使用该ActiveX控件许可的问题”的解决方法
- RTF文件(富文本格式)的一些解析
- Access树控件(treeview) 64位Office下出现横向滚动条不会自动定位的解决办法
- Access中国树控件 在win10电脑 节点行间距太小的解决办法
- EXCEL 2019 64位版(Office 2019 64位)早就支持64位Treeview 树控件 ListView列表等64位MSCOMMCTL.OCX控件下载
- VBA或VB6调用WebService(直接Post方式)并解析返回的XML
- 早期PB程序连接Sqlserver出现错误
- MMC 不能打开文件C:/Program Files/Microsoft SQL Server/80/Tools/Binn/SQL Server Enterprise Manager.MSC 可能是由于文件不存在,不是一个MMC控制台,或者用后来的MMC版
- sql server连接不了的解决办法
- localhost与127.0.0.1区别
- Roych的浅谈数据库开发系列(Sql Server)
- sqlserver 自动备份对备份目录没有存取权限的解决办法
- 安装Sql server 2005 express 和SQLServer2005 Express版企业管理器 SQLServer2005_SSMSEE
联系人: | 王先生 |
---|---|
Email: | 18449932@qq.com |
QQ: | 18449932 |
微博: | officecn01 |