码迷,mamicode.com
首页 > Web开发 > 详细

ado.net连接池效果

时间:2014-12-12 22:00:46      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   ar   color   os   sp   for   on   

//启用连接池
            string constr = "Data Sourse=zxtiger; Initial Catalog=itcastcn;Integrated Security=True";
            Stopwatch watch = new Stopwatch();
            watch.Start();
            for (int i = 0; i < 2000; i++)
            {
                using (SqlConnection con = new SqlConnection(constr))
                {
                    con.Open();
                    con.Close();
                }
            }
            watch.Stop();
            Console.WriteLine(watch.Elapsed);
            Console.ReadKey();
//启用连接池后,只执行一次连接操作
//禁用连接池
            string constr = "Data Sourse=zxtiger; Initial Catalog=itcastcn;Integrated Security=True;Pooling=false";
            Stopwatch watch = new Stopwatch();
            watch.Start();
            for (int i = 0; i < 2000; i++)
            {
                using (SqlConnection con = new SqlConnection(constr))
                {
                    con.Open();
                    con.Close();
                }
            }
            watch.Stop();
            Console.WriteLine(watch.Elapsed);
            Console.ReadKey();

 连接池默认是打开的,当连接池被禁用后

//00:00:00.1383385
//00:00:03.9974913

前后相差29被

所谓的连接池,就是一个与连接对象Connection相关的集合,这不只是简单的集合,而是有一定的机制在内部。我们做开发时,可能建立Connection连接对象,关闭连接对象,有时候还调用Dispose来释放连接。下次再用时,便重新实例化一个连接。但在池中的连接不随连接对象的Close或Dispose而释放。如果下次重新建立连接,连接字符串与前一次完全一模一样,则连接池就会把上次可用的连接对象赋给连接去用。如果两个连接字符串有一点不一样,即使在某一个地方多一个空格,连接池也不会以为是相同的连接,这点微软可能在内部只直接去比较两个字符串了,而不是比较连接数据库字符串的键值互相匹配。

连接池的好处就是保留连接对象,防止下次重头再来实例化一个连接对象。

由于每次正常连接数据库至少执行3个操作(1.登陆数据库服务器2.执行操作3.注销用户),所以每次通过Connection向数据库服务器申请一个连接都比较耗时【ado.net默认启用了连接池】

ado.net连接池效果

标签:style   blog   io   ar   color   os   sp   for   on   

原文地址:http://www.cnblogs.com/wohaoxue/p/4160446.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!