大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本篇内容主要讲解“如何更方便地打开和关闭ADO.NET连接池”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何更方便地打开和关闭ADO.NET连接池”吧!
网站制作、建网站找专业网站建设公司创新互联:定制网站、模板网站、仿站、微信小程序定制开发、软件开发、成都App定制开发等。做网站价格咨询创新互联:服务完善、10多年建站、值得信赖!网站制作电话:028-86922220
MS提倡我们尽可能每次的在连接使用完成后就关闭;这样导致每次都要进行打开和关闭操作或用using(){…}写起代码比较麻烦,还有经常对池的操作似乎也带来一些性能上的问题;在Asp.net里一个WebForm经常涉及有N个数据库操作,为了方便直接在init里打开一个连接,然后在Dispose里关闭即省事又能减少对池的操作提高性能;那到底这样做能不能提高性能呢?答案是能,但有些情况估计会很让你感觉到失望…。当池的连接数能应付用户请求的时候,的确是可以减少池的操作带来性能的提升;反之就不一样了用户必须等待到获取连接后才能进行其他操作,当有更多用户在等待获取连接的时候只能让线程处于更长等待时间导致服务总体处理能力下降。
以下做一次简单的测试:
测试方式是使用VS2008自带的负载测试,测试用户数是200,数据库连接池数设置20,测度时长10分钟。
关闭ADO.NET连接池测试代码1:
protected void Page_Load(object sender, EventArgs e)
{
using (System.Data.SqlClient.SqlConnection sqlconn= new System.Data.SqlClient.SqlConnection("data source=.;initial catalog=northwind;user id=sa;pwd=;Max Pool Size=20"))
{
sqlconn.Open();
System.Threading.Thread.Sleep(300);
}
}
关闭ADO.NET连接池测试代码2:
protected void Page_Load(object sender, EventArgs e)
{
using (System.Data.SqlClient.SqlConnection sqlconn = new System.Data.SqlClient.SqlConnection("data source=.;initial catalog=northwind;user id=sa;pwd=;Max Pool Size=20"))
{
sqlconn.Open();
}
System.Threading.Thread.Sleep(50);
using (System.Data.SqlClient.SqlConnection sqlconn = new System.Data.SqlClient.SqlConnection("data source=.;initial catalog=northwind;user id=sa;pwd=;Max Pool Size=20"))
{
sqlconn.Open();
}
System.Threading.Thread.Sleep(50);
using (System.Data.SqlClient.SqlConnection sqlconn = new System.Data.SqlClient.SqlConnection("data source=.;initial catalog=northwind;user id=sa;pwd=;Max Pool Size=20"))
{
sqlconn.Open();
}
System.Threading.Thread.Sleep(50);
using (System.Data.SqlClient.SqlConnection sqlconn = new System.Data.SqlClient.SqlConnection("data source=.;initial catalog=northwind;user id=sa;pwd=;Max Pool Size=20"))
{
sqlconn.Open();
}
System.Threading.Thread.Sleep(50);
using (System.Data.SqlClient.SqlConnection sqlconn = new System.Data.SqlClient.SqlConnection("data source=.;initial catalog=northwind;user id=sa;pwd=;Max Pool Size=20"))
{
sqlconn.Open();
}
System.Threading.Thread.Sleep(100);
}
关闭ADO.NET连接池测试结果1
undefined
关闭ADO.NET连接池测试结果2
从以上测试结果来看显然是MS所提倡的方式在某些情况是更好的,因为随着并发用户的提高,即用即断的方式总体上表现效果更佳。还有一点非常重要就是***种代码方式会启用了池的***数据库连接数,而第二种代码方式只使用了6个数据库连接;这一点进一步说明了,即用即断在某种情况下更节省数据库连接资源。
虽然结果这样但不代表是什么情况都使用即用即断好,当池不会让用户在门外等的情况是不需要用的,当N个数据库操作间没其他特别耗时的运算***就用一个连接(对于这个耗时多长就根据你实际情况作出权衡了),对于什么情况应该怎样做其实通过测试就能找到答案。不过我个人推荐还是用MS提倡的:),本人一向都是采用这种方式。
到此,相信大家对“如何更方便地打开和关闭ADO.NET连接池”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!