涉及存储过程,数据保存
解决方案 »
- 求一sql语句
- 事务出错the transaction isolation level must be dirty read for local databases
- 不用paste功能如何获取剪贴板上的内容?(图文混排)
- 如何让delphi中的string型与SQL中的varchar型匹配
- 又一个ADO问题,用ADO编程的朋友请进!
- 两层结构的数据库系统的创建?分不够可在加!
- 怎么将access数据导出到FoxBASE+/Dbase III plus表中
- 请问做三层开发用什么方式好是ras还是用dcom?
- 关于读取注册表的问题
- 谁知道microsoft studio.net和windows.net的系列号?
- 如何在程序中处理shellexecute传递的参数?
- 给我一个用delphi写activex ocx的例子吧
1.数据库会对存储过程进行编译
2.对于重复执行的SQL语句可以充分利用数据库的SQL缓冲池,节省了很多对语句重新进行分析的时间
3.减少了网络带宽的占用
在应用系统中,那么让A D O和A D O E x p r e s s拥有良好的执行效率并不是困难的事
情:
1) 尽量找到真正的原生A D O和OLE DB驱动程序。尽量不要使用ADO For
O D B C驱动程序,因为这种架构使用在一些数据库时会发生不正常的执行状况,也
比原生A D O和OLE DB驱动程序来得慢一些。
2) ADO驱动程序的品质大大地影响了应用系统的执行效率,因此,你应该为
你的数据库找一个良好的A D O驱动程序。
3) 尽量使用客户端的CursorLocation,并且只存取应用程序真正需要的数据到
客户端,使用少量、多次的方式存取数据。使用少量、多次的方式存取数据不管是
对于主从架构或分布式多层应用系统都是很好的方式。特别是对于I n t e r n e t / I n t r a n e t
和电子商务应用系统来说,使用这种方式可以确保应用系统能够在许多用户同时使
用的状况下仍然保有合理的执行速度。
4) 适当设定C a c h e S i z e属性值。这是一个绝对不可忽略的设定,它的重要性仅
次于CursorLocation。虽然在前面讨论的内容中我们可以发现设定C a c h e S i z e接近
1 0 0 0左右可以得到最好的效率/空间比,但是必须考虑当应用系统同时被许多用户
同时存取时,在一瞬间网络会传递的数据量有多大。因此你可能必须根据你的应
用系统的执行状况来适当地减少C a c h e S i z e为1 0 0 ~ 1 0 0 0之间的数值。
5) 许多讨论如何优化A D O的文件都会建议使用存储过程,因为这些文件都假
设你只会使用MS SQL Server。但是不管使用什么数据库,如果可以的话,那么对
于需要处理大量数据的工作,使用存储过程绝对可以增加A D O应用程序的执行效
率。因为在这种情形下,存储过程可以让这些大量的数据不传递到客户端,而是
直接在数据库中处理数据,这可以避免造成网络严重的负荷。即使你不想使用存
储过程,因为你可能会使用不同的数据库,对于一些经常会执行的工作,至少也
应该使用Prepared ADO/ ADOExpress组件,这样也可以增加应用程序的执行效率。
6) 对于不会回传结果数据集的工作,例如使用U p d a t e、D e l e t e等修改大量数据
的工作,可以考虑结合存储过程和A D O的异步执行模式。这样可以大大增加A D O
应用程序的执行效率以及减少A D O应用程序的反应时间。
7) ADO的R e c o r d s e t对象,或A D O E x p r e s s的TA D O D a t a S e t、TA D O Q u e r y和
TA D O Ta b l e组件虽然都可以使用S e l e c t的S Q L命令存取数据,并且让用户修改数据
再更新回数据源中。但是,如果你正在开发的A D O应用程序会执行大量的数据修
改的工作,那么你应该使用数个不同的TA D O D a t a S e t、TA D O Q u e r y和TA D O Ta b l e
组件。其中一个用来选取用户需要的数据,并且使用其他的TA D O D a t a S e t,
TA D O Q u e r y和TA D O Ta b l e组件来执行U p d a t e和D e l e t e等的S Q L命令,这样可以增加
A D O应用程序的执行效率。
8) 本项和第7项有关,即当你使用A D O开发分布式多层应用系统时,尽量设
定T D a t a S e t P r o v i d e r组件的R e s o l v e To D a t a S e t为Tr u e。让A D O本身来处理数据的修
改,而不要使用M I D A S的SQL Resolver,因为A D O可以更好地处理数据修改的数
据。但是请注意,由于A D O E x p r e s s目前有一个臭虫,因此在分布式多层应用系统
中不要使用TA D O D a t a S e t、TA D O Q u e r y和TA D O Ta b l e组件来执行U p d a t e和D e l e t e
等的S Q L命令。请直接使用执行Select SQL命令的TA D O D a t a S e t、TA D O Q u e r y和
TA D O Ta b l e组件来执行修改数据的工作。
9) 尽量使用O p t i m i s t i c和B a t c h O p t i m i s t i c这两种类型的L o c k Ty p e,因为它们不
但会降低系统锁定的资源,也可以增加A D O应用程序的执行效率。
10) ADO的Batch Update模式和B D E / I D A P I的C a c h e U p d a t e非常类似,不管是
用在主从架构或I n t e r n e t / I n t r a n e t及电子商务应用系统中都可以增加A D O应用程序
的执行效率。因此程序员应该尽量使用这种模式来开发A D O应用程序。
11) TA D O D a t a S e t、TA D O Q u e r y和TA D O Ta b l e组件的M a r s h a l O p t i o n s控制了客
户端修改的数据如何传递回OLE DB Provider或数据源进行更新的工作。在分布式
多层应用系统和I n t e r n e t / I n t r a n e t及电子商务应用系统中我们绝对不希望传递任何多
余的数据,以避免浪费网络资源。因此适当地设定M a r s h a l O p t i o n s属性值为
m o M a r s h a l M o d i f i e d O n l y也可以增加应用系统的执行效率。
12. 对于和图形用户接口有关的A D O应用程序,例如,如果需要在T D B G r i d组
件中显示大量的数据,那么不要忘记我们早已熟知的技巧,暂时关闭数据感知组
件和A D O存取组件之间的关系,等待数据存取的工作完成之后再启动连接,那么
将可以大大增加图形用户接口响应用户的效率。这就是说,当应用程序要结合大
量数据存取和图形用户接口时,不要忘记调用D i s a b l e C o n t r o l s和E n a b l e C o n t r o l s这
两个方法。
M i c r o s o f t的ADO 2.6即将推出,ADO 3.0已经在研发之中, A D O在未来不但会
拥有更多的功能,在执行速度上也会持续地改善。更重要的是A D O将可以和其他
所有M i c r o s o f t的产品结合在一起,并且存取各种不同数据源中的数据。因此,不
管你使用A D O开发什么架构的应用系统,除了上面讨论的规则之外,请不要忘记
根据你的应用系统的特殊需要来进行适当的A D O调整,以确保你的A D O应用系统
能够提供合理的执行效率。