温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何更方便地打开和关闭ADO.NET连接池

发布时间:2021-07-15 09:27:54 来源:亿速云 阅读:167 作者:chen 栏目:编程语言

本篇内容主要讲解“如何更方便地打开和关闭ADO.NET连接池”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何更方便地打开和关闭ADO.NET连接池”吧!

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

 

<!--[if !vml]-->

如何更方便地打开和关闭ADO.NET连接池


<!--[endif]-->

undefined

关闭ADO.NET连接池测试结果2

 

<!--[if !vml]-->

如何更方便地打开和关闭ADO.NET连接池


<!--[endif]-->

从以上测试结果来看显然是MS所提倡的方式在某些情况是更好的,因为随着并发用户的提高,即用即断的方式总体上表现效果更佳。还有一点非常重要就是***种代码方式会启用了池的***数据库连接数,而第二种代码方式只使用了6个数据库连接;这一点进一步说明了,即用即断在某种情况下更节省数据库连接资源。

虽然结果这样但不代表是什么情况都使用即用即断好,当池不会让用户在门外等的情况是不需要用的,当N个数据库操作间没其他特别耗时的运算***就用一个连接(对于这个耗时多长就根据你实际情况作出权衡了),对于什么情况应该怎样做其实通过测试就能找到答案。不过我个人推荐还是用MS提倡的:),本人一向都是采用这种方式。  

到此,相信大家对“如何更方便地打开和关闭ADO.NET连接池”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI