合理使用ADO的參數規則,優化其執行效率
- 2021-04-28 08:00:00
- 轉貼:
- CSDN
- 13007
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注冊時卡?。?/a>
- 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 |