内容显示页
 
类别:.Net + C# | 浏览(1303) | 2008-8-29 9:39:05

我现在使用一个组件
http://www.cnblogs.com/yueue/archive/2007/05/13/745055.html
但发现一个问题,不知道有没有影响,
我以前用vbs时,如果conn.open后做其它操作都很快,但conn.open这个过程很慢,而我看到这个程序里,每执行一次函数如:
        /// <summary>
        /// 执行数据库命令返回受影响的行数
        /// </summary>
        /// <param name="SQLText">SQL语句 </param>
        /// <returns>受影响的行数 </returns>
        public int ExecuteNonQuery(string SQLText)
        {
            if (IsProcedure(SQLText)) { mCommand.CommandType = CommandType.StoredProcedure; } else { mCommand.CommandType = CommandType.Text; }
            mCommand.CommandText = SQLText;
            try
            {
                mCommand.Connection.Open();
                return mCommand.ExecuteNonQuery();
            }
            finally
            {
                mCommand.Connection.Close();
                ClearParameters();
            }
他都会先conn.open执行完后再conn.close一次,

现在的问题是:如果我一页要执行10多条这个函数,每次都open后再close会不会影响执行效率,影响有多大?
因为以前的VBS我感觉影响非常大,而听说.net 有连接池,即便我close了,下次链接时open会从池里取,原不是像第一次那样执行,所以速度不会有什么影响?请问是这样吗?麻烦各位指点一二.


csdn上的回答:

又见connection忧虑贴

mCommand.Connection.Close();

不是把连接真正的关闭,而是把连接归还给连接池。


mCommand.Connection.Open(); 其实就是从连接池取连接

经测试:

效率没有影响,不管是连接远程还是连接本地数据库进行1000次写入,结果都只是差几百毫秒,

以前没考虑这个问题,今天同事提到,我才想到这问题,没想到Microsoft都已经把这问题给解决了。

而我上面提到的vbs频繁Conn.Open及Conn.Close对程序效率影响很大是因为那个年代还没有连接池这个概念,所以速度相差很大。

 


引用本页地址:http://www.yongfa365.com/item/conn.open.conn.close.html
 
 
相关链接
 
网友评论:
1 lanyur - 2010-8-11 0:44:21
假如有100个连接串,每个连接串的数据库服务器都不一样。
在调用的时候,随机从这100个串中抽取一个来执行一个SQL操作(数据库中表结构一样)
请问,这个时候连接池有效果没?
 
2 匿名网友 - 2010-8-11 8:23:42
连接池跟字符串有关,只要字符串一样,就会使用连接池,按你的说法,100个晨随机抽取,很可能利用不了连接池。
 
3 lanyur - 2010-8-11 9:18:42
可能会这样吧,但是连接池好象有一定的时间,超时连接池也断开了。
看socket连接得出来的结论,没验证过。
 
4 匿名网友 - 2010-8-11 11:10:13
是的,有一定时间,但要想使用连接池,肯定得连接字符串一样,如果是不定连接到多台机器,就如我所说,很可能利用不了连接池
 
5 lanyur - 2010-8-12 10:46:54
哈哈,那你的结论也是没验证过吧。
不过奇怪的时,连接池的设置应该是不会断开的呀(除非故障)
有点象长连接的感觉,连接的时间比较长一点而以。
连接池这样设置恐怕是不合理的吧,所以感觉不象连接池。
另外,也只是建立了一个Sokect,一般连接池会初始化一个大小,
难道微软设置成随着并发访问越来越多,这个“连接池”数量增加?!
 
6 匿名网友 - 2010-8-12 18:20:44
推荐你看下www.yongfa365.com/item/ADO.NET-2.0-Connection-Pool.html
 
姓名: 记住我
网址:
邮箱:
内容:
验证码:  验证码图片 看不清? 换张图试试
 
     
 
 
文章分类
 
 
.Net + C#(73)
 
 
ASP+VBS(161)
 
 
 
Linux(10)
 
 
 
web 2.0(26)
 
 
 
 
 
心程(68)
 
生活(97)
 
 
     

Power by :柳永法(yongfa365)'Blog  | 京ICP备07011491号  QQ:64049027  E-mail:64049027@qq.com yongfa365'CodePlex yongfa365'CodeGoogle

申请友情链接 要求:跟本站主题相类似正规网站,双方交换为首页位置

转载请注明来源,以便后人及时得到最新、修正、加强版!!!