我一直有个概念级问题搞不清,请教高手!
有两个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个方法中 最后一个是比较常用的