日期:2014-05-17  浏览次数:20888 次

我一直有个概念级问题搞不清,请教高手!
有两个ASP文件

1.asp                             |           2.asp
                                      |
Set   conn   =   ...           |           Set   conn   =   ...  
Conn.open   ...             |           Conn.open   ...
Set   rs   =   ...               |           Set   rs   =   ...
RS.open   ...                 |           RS.open   ...

在1.asp中,我们操作完数据库后,使用下面代码关闭数据库及连接:
RS.close
set   rs=nothing
conn.close
set   conn=nothing

但在2.asp中,我们又重新打开了这些连接,我的意思是,如果网站中有多个这样的文件,不停的打开关闭数据库,是否会影响性能?
或者为了写代码方便,干脆我们只管开,不管关,这样有什么危害?
两种方法到底哪种更好?请高手给予详细的解答!!

------解决方案--------------------
如果只开不关,那最后的结果必然是服务器资源被耗尽...
------解决方案--------------------
在页面内及时关闭记录集和链接并设为Nothing,有益于ODBC连接池的使用效率,这样做的效率是最高的。
如果不关闭的话,在大访问量的情况下,由于线程等待资源释放,会造成100%CPU问题。
用WAST测试一下就可以知道,微软的官方文档中也有说明。
------解决方案--------------------
数据库对象其实是可以放在3个地方
application 里,始终打开,速度快,但没有用户访问也连着,占资源,多个用户只有一个连结,但用户多,就用一个连结有瓶颈

session 里,每个用户来就连结,不要重新连,速度快,但同时用户多的话,服务器都要保持连结,占资源,而且我们平时看网站,1分钟的话,运行1秒钟出来,我们看59秒,这59秒占了资源又不用浪费资源,降低效率

页面里,就是页面开始打开,结束关闭,没有瓶颈,但速度会慢,所以有个连结池的概念,系统会帮我们管理的,如果一个关闭,一个打开,系统会帮我们直接用另外一个来连
------解决方案--------------------
楼上的3个方法中 最后一个是比较常用的