关于sql server:ADO.NET连接池和SQLServer

关于sql server:ADO.NET连接池和SQLServer

ADO.NET Connection Pooling & SQLServer

  • 它是什么?
  • 如何使用MS SQL实现连接池?
  • 什么时候性能会有什么影响
    • 一个接一个地执行许多查询(即使用具有30K +次迭代的循环调用存储过程)?
    • 执行一些需要很长时间(超过10分钟)的查询?
  • 有没有最佳做法?

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

如果您使用MSSQL连接字符串和System.Data.SqlClient,那么您已经在使用它-在.Net中,大多数情况下,这些内容都在幕后。

作为服务器端游标(查找T-SQL游标语句)的一个30k迭代循环可能更好,具体取决于您对sproc外部的每个步骤所进行的操作。

较长的查询很好-但是请小心从网页调用它们,因为Asp.Net并未真正针对长时间的等待进行优化,并且某些连接会中断。


有关连接池的更多信息...您已经在SqlClient中使用它,但前提是您打开的每个新连接的连接字符串均相同。我的理解是,该框架会在可能的情况下自动池化连接,但是如果连接字符串在一个连接与另一个连接之间的变化甚至很小,那么新的连接就不会来自该池-它是重新创建的(因此更昂贵) )。

您可以将Performance Monitor应用程序与XP / Vista一起使用以观察SQL连接,并且很快就会看到是否正在使用池。在性能监视器中的" .NET CLR数据"类别下查看。


我第二个基思;如果您要调用一个存储过程30,000次,则问题要比连接池大得多。


这个主题也部分回答了您的问题。通过搜索可以发现这一点。Connection Pooling的定义,其中Google会以第一个命中结果为答案。

这将留下最佳实践,我认为这将是一个很好的问题:)

对基思的答案+1。他已经把头钉在了头上。

只是从FAQ中礼貌地提醒您:

You've searched the internet before
asking your question, and you come to
us armed with research and information
about your question ... right?


推荐阅读