<form id="hbx9t"></form>

<noframes id="hbx9t">

    <em id="hbx9t"><span id="hbx9t"></span></em>

        <noframes id="hbx9t"><address id="hbx9t"><th id="hbx9t"><progress id="hbx9t"></progress></th></address>
        office交流網--QQ交流群號

        Access培訓群:792054000         Excel免費交流群群:686050929          Outlook交流群:221378704    

        Word交流群:218156588             PPT交流群:324131555

        合理使用ADO的參數規則,優化其執行效率

        2021-04-28 08:00:00
        轉貼:
        CSDN
        12583

        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這兩個方法。

        分享