office交流網(wǎng)--QQ交流群號(hào)

Access培訓(xùn)群:792054000         Excel免費(fèi)交流群群:686050929          Outlook交流群:221378704    

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

合理使用ADO的參數(shù)規(guī)則,優(yōu)化其執(zhí)行效率

2021-04-28 08:00:00
轉(zhuǎn)貼:
CSDN
13992

access在數(shù)據(jù)處理中,用得比較多要數(shù)是ADO了。數(shù)據(jù)量大了,避免不了效率下降。

下面幾點(diǎn)規(guī)則只要程序員了解并且適當(dāng)?shù)厥褂迷趹?yīng)用系統(tǒng)中,有利于優(yōu)化ADO和ADOExpress的執(zhí)行效率,提高運(yùn)行速度:

1、 盡量找到真正的原生ADO和OLE DB驅(qū)動(dòng)程序。盡量不要使用ADO For ODBC驅(qū)動(dòng)程序,因?yàn)檫@種架構(gòu)使用在一些數(shù)據(jù)庫時(shí)會(huì)發(fā)生不正常的執(zhí)行狀況,也比原生ADO和OLE DB驅(qū)動(dòng)程序來得慢一些。


2、 ADO驅(qū)動(dòng)程序的品質(zhì)大大地影響了應(yīng)用系統(tǒng)的執(zhí)行效率,因此,你應(yīng)該為你的數(shù)據(jù)庫找一個(gè)良好的ADO驅(qū)動(dòng)程序。


3、 盡量使用客戶端的Cursor Location,并且只存取應(yīng)用程序真正需要的數(shù)據(jù)到客戶端,使用少量、多次的方式存取數(shù)據(jù)。使用少量、多次的方式存取數(shù)據(jù)不管是對(duì)于主從架構(gòu)或分布式多層應(yīng)用系統(tǒng)都是很好的方式。特別是對(duì)于Internet/Intranet和電子商務(wù)應(yīng)用系統(tǒng)來說,使用這種方式可以確保應(yīng)用系統(tǒng)能夠在許多用戶同時(shí)使用的狀況下仍然保有合理的執(zhí)行速度。


4、 適當(dāng)設(shè)定CacheSize屬性值。這是一個(gè)絕對(duì)不可忽略的設(shè)定,它的重要性僅次于Cursor Location。雖然在前面討論的內(nèi)容中我們可以發(fā)現(xiàn)設(shè)定CacheSize接近1000左右可以得到最好的效率/空間比,但是必須考慮當(dāng)應(yīng)用系統(tǒng)同時(shí)被許多用戶同時(shí)存取時(shí),在一瞬間網(wǎng)絡(luò)會(huì)傳遞的數(shù)據(jù)量有多大。因此你可能必須根據(jù)你的應(yīng)用系統(tǒng)的執(zhí)行狀況來適當(dāng)?shù)販p少CacheSize為100 ~ 1000之間的數(shù)值。


5、 許多討論如何優(yōu)化ADO的文件都會(huì)建議使用存儲(chǔ)過程,因?yàn)檫@些文件都假設(shè)你只會(huì)使用MS SQL Server。但是不管使用什么數(shù)據(jù)庫,如果可以的話,那么對(duì)于需要處理大量數(shù)據(jù)的工作,使用存儲(chǔ)過程絕對(duì)可以增加ADO應(yīng)用程序的執(zhí)行效率。因?yàn)樵谶@種情形下,存儲(chǔ)過程可以讓這些大量的數(shù)據(jù)不傳遞到客戶端,而是直接在數(shù)據(jù)庫中處理數(shù)據(jù),這可以避免造成網(wǎng)絡(luò)嚴(yán)重的負(fù)荷。即使你不想使用存儲(chǔ)過程,因?yàn)槟憧赡軙?huì)使用不同的數(shù)據(jù)庫,對(duì)于一些經(jīng)常會(huì)執(zhí)行的工作,至少也應(yīng)該使用Prepared ADO/ ADOExpress組件,這樣也可以增加應(yīng)用程序的執(zhí)行效率。


6、 對(duì)于不會(huì)回傳結(jié)果數(shù)據(jù)集的工作,例如使用Update、Delete等修改大量數(shù)據(jù)的工作,可以考慮結(jié)合存儲(chǔ)過程和ADO的異步執(zhí)行模式。這樣可以大大增加ADO應(yīng)用程序的執(zhí)行效率以及減少ADO應(yīng)用程序的反應(yīng)時(shí)間。


7、  ADO的Recordset對(duì)象,或ADOExpress的TADODataSet、TADOQuery和TADOTable組件雖然都可以使用Select的SQL命令存取數(shù)據(jù),并且讓用戶修改數(shù)據(jù)再更新回?cái)?shù)據(jù)源中。但是,如果你正在開發(fā)的ADO應(yīng)用程序會(huì)執(zhí)行大量的數(shù)據(jù)修改的工作,那么你應(yīng)該使用數(shù)個(gè)不同的TADODataSet、TADOQuery和TADOTable組件。其中一個(gè)用來選取用戶需要的數(shù)據(jù),并且使用其他的TADODataSet,
TADOQuery和TADOTable組件來執(zhí)行Update和Delete等的SQL命令,這樣可以增加ADO應(yīng)用程序的執(zhí)行效率。


8、 本項(xiàng)和第7項(xiàng)有關(guān),即當(dāng)你使用ADO開發(fā)分布式多層應(yīng)用系統(tǒng)時(shí),盡量設(shè)定TDataSetProvider組件的Resolve To DataSet為True。讓ADO本身來處理數(shù)據(jù)的修 改,而不要使用MIDAS的SQL Resolver,因?yàn)锳DO可以更好地處理數(shù)據(jù)修改的數(shù)據(jù)。但是請(qǐng)注意,由于ADOExpress目前有一個(gè)臭蟲,因此在分布式多層應(yīng)用系統(tǒng)中不要使用TADODataSet、TADOQuery和TADOTable組件來執(zhí)行Update和Delete等的SQL命令。請(qǐng)直接使用執(zhí)行Select SQL命令的TADODataSet、TADOQuery和TADOTable組件來執(zhí)行修改數(shù)據(jù)的工作。


9、 盡量使用Optimistic和BatchOptimistic這兩種類型的LockType,因?yàn)樗鼈儾坏珪?huì)降低系統(tǒng)鎖定的資源,也可以增加ADO應(yīng)用程序的執(zhí)行效率。


10、 ADO的Batch Update模式和BDE/IDAPI的CacheUpdate非常類似,不管是用在主從架構(gòu)或Internet/Intranet及電子商務(wù)應(yīng)用系統(tǒng)中都可以增加ADO應(yīng)用程序的執(zhí)行效率。因此程序員應(yīng)該盡量使用這種模式來開發(fā)ADO應(yīng)用程序。


11、 TADODataSet、TADOQuery和TADOTable組件的MarshalOptions控制了客戶端修改的數(shù)據(jù)如何傳遞回OLE DB Provider或數(shù)據(jù)源進(jìn)行更新的工作。在分布式多層應(yīng)用系統(tǒng)和Internet/Intranet及電子商務(wù)應(yīng)用系統(tǒng)中我們絕對(duì)不希望傳遞任何多余的數(shù)據(jù),以避免浪費(fèi)網(wǎng)絡(luò)資源。因此適當(dāng)?shù)卦O(shè)定MarshalOptions屬性值為moMarshalModifiedOnly也可以增加應(yīng)用系統(tǒng)的執(zhí)行效率。


12、 對(duì)于和圖形用戶接口有關(guān)的ADO應(yīng)用程序,例如,如果需要在TDBGrid組件中顯示大量的數(shù)據(jù),那么不要忘記我們?cè)缫咽熘募记?,暫時(shí)關(guān)閉數(shù)據(jù)感知組件和ADO存取組件之間的關(guān)系,等待數(shù)據(jù)存取的工作完成之后再啟動(dòng)連接,那么將可以大大增加圖形用戶接口響應(yīng)用戶的效率。這就是說,當(dāng)應(yīng)用程序要結(jié)合大量數(shù)據(jù)存取和圖形用戶接口時(shí),不要忘記調(diào)用Disable Controls和Enable Controls這兩個(gè)方法。

分享
文章分類
聯(lián)系我們
聯(lián)系人: 王先生
Email: 18449932@qq.com
QQ: 18449932
微博: officecn01
移動(dòng)訪問