ADO.NET Connection Pooling&SQLServer

问题描述:

  • 这是什么?
  • 如何使用MS SQL实现连接池?
  • 有哪些表现后果时
    • 执行多个查询单后,其他(即使用具有30K +迭代循环中调用存储过程)?
    • 执行一些需要很长时间(10分钟以上)的查询吗?
  • 是否有最佳做法?

连接池是一种重用连接的机制,因为建立新的连接速度很慢。

如果您使用MSSQL连接字符串和System.Data.SqlClient,那么您已经在使用它 - 在.Net中,这个东西大部分时间都处于隐藏状态。

作为服务器端游标(查找T-SQL游标语句),取决于您在存储区外的每个步骤中执行的操作,30k迭代循环可能会更好。

长时间查询很好 - 但要小心从网页调用它们,因为Asp.Net并没有真正针对长时间等待进行优化,并且一些连接将被切断。

有关连接池事情的更多信息......您已经在SqlClient中使用它,但前提是您的连接字符串对于您打开的每个新连接都是相同的。我的理解是,框架会在可能时自动连接连接,但如果连接字符串从一个连接到下一个连接稍有不同,那么新连接将不会从连接池中获取 - 它会重新创建(因此它更加昂贵)。

您可以在XP/Vista上使用性能监视器应用程序来观察SQL连接,您将很快看到是否正在使用池化。看看下性能监视器中的“.NET CLR数据”类别”

我第二基思;如果你调用存储过程30000次,你比连接池远远更大的问题

你的问题并提供部分this thread回答。一搜索就会发现这个..连接池,其中的Google会用头撞是this回答哪会只留下最佳实践,我认为该定义..

会是一个很好的问题:)

+1至Keith's Answer。他击中了脑袋上的指甲。

刚从FAQ礼貌提醒:

您已经搜查问你的问题之前 互联网,你来 美国军队与你的问题的研究和信息 ,对吧?