ADO.NET Connection Pooling& SQLServer的

时间:2008-08-12 20:48:31

标签: sql-server performance ado.net

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

4 个答案:

答案 0 :(得分:3)

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

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

作为服务器端游标(查找T-SQL游标语句),30k迭代的循环可能会更好,这取决于你在sproc之外的每一步做什么。

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

答案 1 :(得分:2)

关于连接池事情的更多信息......你已经在SqlClient中使用它了,但是只有当你打开的每个新连接的连接字符串相同时。我的理解是框架会在可能的情况下自动汇集连接,但是如果连接字符串从一个连接稍微变化到下一个连接,那么新连接将不会来自池 - 它会重新创建(因此它更昂贵) )。

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

答案 2 :(得分:0)

我是第二个基思;如果你正在调用存储过程30,000次,那么你遇到的问题远远大于连接池。

答案 3 :(得分:-3)

this thread也部分回答了您的问题。搜索会显示这个..连接池的定义,其中Google将回答第一个命中为this ..

这会留下最好的做法,我认为这是一个很好的问题:)

+1到Keith's Answer。他的头上钉了一针。

只是来自FAQ的礼貌提醒:

  

您之前搜索过互联网   问你的问题,然后你来   我们拥有研究和信息   关于你的问题......对吧?