抓虫系列(三)不要轻视web程序中常用的三个“池”之数据库连接池

发表于:2013-4-17 09:40

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:熬夜的虫子    来源:51Testing软件测试网采编

分享:

  那么我们换成pooling=false看看

private string mConnectionString = "server=127.0.0.1;uid=chongzi;pwd=123456;database=AntiXSS;Connection Reset=FALSE;Pooling=FALSE";

  初始是1个

  我们同样开3个进程

  看结果

  1个~ ~

  Conn这个链接对象我一直没有手动释放它。

  对于这种现象我的解释是:

  ADO.NET不依赖于ole db提供程序,而是使用.net托管提供的程序,可以断开connection而保留当前数据集可用,也就是非连接的方式。通常我们的程序默认是池化的,据库连接池中可能存在着多个没有被使用的连接一直连接着数据库。

  总结一下:

  池化,提高性能,但是同时会提高连接数。至于连接是否活动带来的影响未作分析。

  非池化,性能一般,但是连接每次都是自动释放。

  而且现在大家的应用程序当中,很多都是配置了池化但是实现了非池化。

  回到上面的那个问题,为什么没有出现61个。

  我们来修改下代码

public DataSet excSqlRetDataSet(string sqlString)
       {
           DataSet ds = null;
           if (sqlString.Length == 0)
           {
               return ds;
           }
           for (int i = 0; i < 20; i++)
           {
               SqlConnection conn = new SqlConnection(mConnectionString);
               conn.Open();
               //ds = new DataSet();
               //string sqlCommand = sqlString;
               //SqlDataAdapter da = new SqlDataAdapter(sqlCommand, conn);
               //da.Fill(ds);
               //注意了 我这里没有释放链接
               //conn.Close();
           }
           return ds;
       }

  改哪里就自己找吧,虫子就不多说了。嘿嘿看效果图。初始化就不接了,同样3个进程

  看到这里不需要虫子解释,你们也应该都懂了。.net如此为大家着想,是好事还是坏事,各自评定了。

相关链接:

抓虫系列(一)从简单程序开始 线程安全

抓虫系列(二)不要轻视web程序中常用的三个“池”之应用程序池

22/2<12
重磅发布,2022软件测试行业现状调查报告~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2023
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号