若天明 发表于 2015-1-16 23:15:22

ASP编程:asp中ADO的优化

强大的可扩展性。ASP具有强大的扩展性,可以实现与多种网络、硬件设备的连接:通过专用的通讯线路远程接入企业;通过远程拨号服务器为远程拨号客户提供服务;通过WAP为移动电话互联网客户服务。ado|优化1Connection

1.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提供的是一对多的服务,所以用户的一些特殊需求很难得到满足。

若相依 发表于 2015-1-20 08:43:15

ASP主要是用好六个对象,其实最主要的是用好其中两个:response和request,就可以随心所欲地控制网页变换和响应用户动作了。

再现理想 发表于 2015-1-20 20:12:28

多看多学多思。多看一些关于ASP的书籍,一方面可以扩展知识面一方面可以鉴借别人是如何掌握、运用ASP的;多学善于关注别人,向同学老师多多学习,不论知识的大小;多思则是要将学到的知识灵活运用。

透明 发表于 2015-1-24 15:33:59

虽然ASP也有很多网络教程。但是这些都不系统。都是半路出家,只是从一个例子告诉你怎么用。不会深入讨论,更不会将没有出现在例子里的方法都一一列举出来。

若天明 发表于 2015-1-25 10:11:59

哪些内置对象是可以跳过的,或者哪些属性和方法是用不到的?

灵魂腐蚀 发表于 2015-1-26 16:54:04

虽然ASP也有很多网络教程。但是这些都不系统。都是半路出家,只是从一个例子告诉你怎么用。不会深入讨论,更不会将没有出现在例子里的方法都一一列举出来。

兰色精灵 发表于 2015-2-4 16:55:24

弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。

再见西城 发表于 2015-2-10 04:17:12

下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。

第二个灵魂 发表于 2015-2-28 19:28:09

另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件)

admin 发表于 2015-3-10 06:51:33

Session:这个存储跟客户端会话过程的数据,默认20分钟失效

仓酷云 发表于 2015-3-17 04:58:55

我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。

蒙在股里 发表于 2015-3-23 19:51:29

ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。
页: [1]
查看完整版本: ASP编程:asp中ADO的优化