ASP编程:asp中ADO的优化
强大的可扩展性。ASP具有强大的扩展性,可以实现与多种网络、硬件设备的连接:通过专用的通讯线路远程接入企业;通过远程拨号服务器为远程拨号客户提供服务;通过WAP为移动电话互联网客户服务。ado|优化1Connection1.1Pooling
在WebApplication中,经常会呈现同时有良多用户同时会见数据库的情形,并且ASP中的工具感化域是页面级的,也就是说,每一个页面都要连接和断开数据库,岂不是会很慢?并且每一个到SQLServer数据库的连接会带来37k的体系开支,怎样办?
大概有人会想到用Application和Session来办理成绩,可是,这是不成取的,假如用Application,那末会呈现多个用户同时经由过程一个Connection会见数据库的情形,固然节俭了创建毗连的工夫,可是会见数据库的速率就会变得十分慢。假如用Session,呈现的成绩就是,Session超时怎样办?假如把Session.Timeout设得很年夜,那用户分开以后,毗连还会保存一段工夫,也会带来分外的开支。
实在基本不必思索这个成绩,经由过程OLEDB会见数据库,它会替你办理这个成绩,OLEDB有一个ResourcePooling,它会代办署理你的毗连哀求,然后把他人刚用过的毗连给你接着用。(详细机制不再论述,实在我也没弄太分明,嘻嘻)
1.2Provider
大概没有几人用过这个Property吧,它的缺省值是MSDASQL,另有MSIDXS和ADSDSOObject,可是在ADO2.0(见VS98)和ADO2.1(见SQL7)内里供应了一些新的Provider:
MSDAORA(OLEDBProviderforOracle)
Microsoft.Jet.OLEDB.3.51(OLEDBProviderforMicrosoftJet(forACCESS))
SQLOLEDB(MicrosoftSQLServerOLEDBProvider)
假如你所用的数据库是这些的话,用这些新的Provider就能够欠亨过ODBC而间接会见数据库,进步的效力便可想而知了。
2Command
2.1CommandType
缺省值是adCmdUnknown,ADO会逐一判别你的CommandType,直到它以为符合为止,不倡议接纳。(在Recordset.Open和Connection.Execute的时分也能够用)
adCmdText是照原样实行你的SQL语句,可是假如你的SQLLanguage是以下几种的话,经由过程利用其余CommandType就能够进步你的SQL语句实行效力
objCmd.Execute"Select*fromtable_name",adCmdText可交换为objCmd.Execute"table_name",adCmdTable
objCmd.Execute"Execproceuure_name",adCmdText可交换为objCmd.Execute"proceuure_name",adCmdStoredProc
另有很主要的一点就是,假如你的SQL语句没有前往纪录集,如insert和update等,那末利用adExecuteNoRecords(ADO2.0)能够减低体系开支(能够加到adCmdText和adCmdStoredProc上,如adCmdStoredProc+adExecuteNoRecords)
另有adCmdTableDirect和adCmdFile(ADO2.0),我还不太分明怎样用,adCmdFile可用于会见一个XML文件。
2.2Prepared
假如你必要反复的实行相似的SQL语句,那末你能够预编译你的SQL语句,进步的效力也很可不雅
objCmd.CommandText="SELECTspellfromTYPER.wordspellwhereword=?"
objCmd.Prepared=True
objCmd.Parameters.AppendobjCmd.CreateParameter("word",adVarChar,,2)
Fori=1ToLen(strName)
strChar=Mid(strName,i,1)
objCmd("word")=strChar
SetobjRS=objCmd.Execute
IfobjRS.EOFThen
strNamesame=strNamesame&strChar
Else
strNamesame=strNamesame&objRS("spell")
EndIf
Next’i=1ToLen(strName)
周全优化ADO
3Recordset
3.1LockType
缺省是adLockReadOnly,假如你不必修正数据,就不要改成adLockOptimistic之类的,不然也会减低速率和增添开支的
adLockReadOnly>adLockPessimistic>adLockOptimistic>adLockBatchOptimistic
3.2CursorType
缺省是adOpenForwardOnly,假如你只用MoveNextMethod,也最好不要改,速率影响140%摆布
adOpenForwardOnly>adOpenDynamic>adOpenKeyset>adOpenStatic
3.3CursorLocation
缺省是adUseServer,实在欠好,它能够随时反应数据库服务器上的修改,可是体系开支很年夜,并且必要保持和数据库服务器的毗连,可是在数据库服务器和WebServer在一同的时分要快些。不外在adLockOptimistic的时分使我没法利用RecordCount等Property。
利用用adUseClient的话,你能够对数据做再排序,选择,shape等操纵
假如对数据的及时性没有请求的话,只管用adUseClient
4别的
4.1Earlybind
用ASP这一点就不必看了,假如用VB的话
DimobjConnAsADODB.Connection比SetobjConn=CreateObject("ADODB.Connection")要好
4.2ADO2.1里的shape真是好玩
4.3ADO2.1能够用objRS.Fields.Append来创建一个Recordset
4.4把Recordset的一列数据间接酿成一个数组来操纵速率快一些,可是体系开支要年夜一些
</p>由于ASP提供的是一对多的服务,所以用户的一些特殊需求很难得到满足。 ASP主要是用好六个对象,其实最主要的是用好其中两个:response和request,就可以随心所欲地控制网页变换和响应用户动作了。 多看多学多思。多看一些关于ASP的书籍,一方面可以扩展知识面一方面可以鉴借别人是如何掌握、运用ASP的;多学善于关注别人,向同学老师多多学习,不论知识的大小;多思则是要将学到的知识灵活运用。 虽然ASP也有很多网络教程。但是这些都不系统。都是半路出家,只是从一个例子告诉你怎么用。不会深入讨论,更不会将没有出现在例子里的方法都一一列举出来。 哪些内置对象是可以跳过的,或者哪些属性和方法是用不到的? 虽然ASP也有很多网络教程。但是这些都不系统。都是半路出家,只是从一个例子告诉你怎么用。不会深入讨论,更不会将没有出现在例子里的方法都一一列举出来。 弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。 下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。 另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件) Session:这个存储跟客户端会话过程的数据,默认20分钟失效 我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。 ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。
页:
[1]