|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
Access是一种桌面数据库,只适合数据量少的应用,在处理少量数据和单机访问的数据库时是很好的,效率也很高。但是它的同时访问客户端不能多于4个。access数据库有一定的极限,如果数据达到100M左右,很容易造成服务器iis假死,或者消耗掉服务器的内存导致服务器崩溃。ado|工具在实在的生存里,程序员生成怠惰.这个现实使我们常常深陷BUG的泥塘.特别是当用ASP处置数据库毗连时,它将让你感到身处油锅.
在ASP里,我们创建数据库毗连,然后用ADO取得数据查询的了局;我们最经常使用到的是ADODB.Connection和ADODB.Recordset.让我们看一个复杂的例子来懂得一下怎样利用这两个工具:
DimobjConn
SetobjConn=Server.CreateObject("ADODB.Connection")
objConn.ConnectionString="DSN=Northwind"
objConn.Open
DimobjRS
SetobjRS=Server.CreateObject("ADODB.Recordset")
objRS.Open"SELECT*FROMTable1",objConn
假如你还不是很熟习数据库毗连的话,请先浏览这篇文章
(http://www.4guysfromrolla.com/webtech/faq/Databases/faq2.shtml).
我们从objRS入手下手会商我们的主题.当我们用完objRS以后会做些甚麽呢?一般情形下程序员不再举行任何操纵,他们让ASP往摒挡后事.当Server.CreateObject挪用产生后,服务器将分派资本来操纵这些工具的新实例(instances),假如我们不显式地关照服务器我们不再利用这些分派的资本了,ASP应当为我们开释这些资本.对ASP完整信托有点儿冒险.更平安和更可托的举措是显式地封闭和扫除我们的Recordset和
Connection工具的实例.
我们该怎样封闭我们的工具及开释失落所分派的内存呢?我们所要做的全体事变就是当我们用完这两个工具后挪用以下的四行代码:
objRS.Close
SetobjRS=Nothing
objConn.Close
SetobjConn=Nothing
如许将强迫开释资本,远赛过依附ASP隐式地主动开释.如今,你大概会有些困惑:我们这么做真的很主要吗?谁会在每一个用过数据库毗连的ASP页面里多写四行代码呢?如许做的优点远远凌驾多写四行代码给我们带来的包袱.让我们援用
ActiveServerPages.com(http://www.activeserverpages.com/)的站长的一些话:
"你应当封闭Recordset,设为Nothing,封闭Connection,用一样的序次将其设为
Nothing.尺度的资本碎片搜集是不完整的和不成信的.[后面提到的碎片收
集,Charles指的是隐式地扫除服务器分派的资本.]
"DataReturn[一个ASPwebhosting公司]有很多站点依附IIS主动举行碎片搜集时呈现可骇的毛病.在加上Close/SetNothing的几行代码后,这些站点又象马儿一样愉快地跑起来.一切的年夜站都有显式开释资本的硬性划定."
假如Charles的话还不克不及让你佩服,让我们来会商一个因为没有显式利用内存再分派而呈现的成绩,这是个实在的例子.BrianFairchild用Access做背景数据库来撑持一个ASP年夜站.他发明每过一阵子工夫,ASP页面就会完整中断响应!HTML页能一般显现,但一切的ASP页面完整瘫痪,体系不能不重启.最初,Brian发明,显式地封闭和开释Recordset和Connection工具,妨碍就全体消散了.(看看动静板上Brian谈及此妨碍的文章)(http://www.aspmessageboard.com/forum/performance.asp?
M=1321&P=1&F=23)
CharlesCarroll还告知我们一个技能,那些用Access的用户应当增添缺省的线程数量.这儿就是Charles所说的:
"注册内外Access缺省的线程数是4.把它加到20将会使服务器跑得出乎平常的顺畅,但只是对Access出格管用,我们的服务器的CPU占用率从上午8点到早晨5点都是100%,但我在增添了线程数今后,服务器上的CPU即刻凉爽了上去."
</p>由于ASP还是一种Script语言所没除了大量使用组件外,没有办法提高其工作效率。它必须面对即时编绎的时间考验,同时我们还不知其背后的组件会是一个什么样的状况; |
|