用链接池吧!
一个连接到数据库的connection确实很费时间和资源的,但是open后再close并不是表示再次open的时候connection是重新连接数据库的,而有可能是从连接池里直接使用已有连接,如果你启用了连接池的话,速度和资源并未有多大损伤
连接资源是宝贵的和有限的,如果一个connection长时间保持open状态,那么它就不可能返回连接池以得到再次使用,
所以connection要仅可能迟的open,而尽可能的快速关闭,这样连接资源就可以更快的返回连接池以得到再次使用
你所说的,在一个页面当中的调用,时间间隔有多大,一个连接需要保持open多长时间?
一个系统的并发可能很大,但未必会集中在一个页面的访问,所以从整体的角度来看,
最迟open ,最快close是一种很不错的方法
相对于很多人还在自己写连接池的管理程序,说明一点:
ASP.NET对连接池的支持已经可以简化到完全不用coding了,如果担心默认的情况下没有打开,可以在connectionstring里面设置pooling=true。
另外,还可以显式的指定最小和最大的连接保持数,比如,MinPoolSize=5,你可以在SQL Server的Enterprise Manager里观察到从ASP.NET来的连接数总是保持在5个以上的。
一句话,用了连接池以后,你的网页里的打开和关闭只是从池取出和放回连接而已了,而这一切都是ASP.NET Framework自动提供的,你要做的只是设设参数而已。
一个连接到数据库的connection确实很费时间和资源的,但是open后再close并不是表示再次open的时候connection是重新连接数据库的,而有可能是从连接池里直接使用已有连接,如果你启用了连接池的话,速度和资源并未有多大损伤
连接资源是宝贵的和有限的,如果一个connection长时间保持open状态,那么它就不可能返回连接池以得到再次使用,
所以connection要仅可能迟的open,而尽可能的快速关闭,这样连接资源就可以更快的返回连接池以得到再次使用
你所说的,在一个页面当中的调用,时间间隔有多大,一个连接需要保持open多长时间?
一个系统的并发可能很大,但未必会集中在一个页面的访问,所以从整体的角度来看,
最迟open ,最快close是一种很不错的方法
相对于很多人还在自己写连接池的管理程序,说明一点:
ASP.NET对连接池的支持已经可以简化到完全不用coding了,如果担心默认的情况下没有打开,可以在connectionstring里面设置pooling=true。
另外,还可以显式的指定最小和最大的连接保持数,比如,MinPoolSize=5,你可以在SQL Server的Enterprise Manager里观察到从ASP.NET来的连接数总是保持在5个以上的。
一句话,用了连接池以后,你的网页里的打开和关闭只是从池取出和放回连接而已了,而这一切都是ASP.NET Framework自动提供的,你要做的只是设设参数而已。