ADO.NET连接池和SQLServer

时间:2020-03-05 18:39:16  来源:igfitidea点击:
  • 它是什么?
  • 如何使用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次,那么我们遇到的问题比连接池要大得多。

回答

这个主题也部分回答了问题。通过搜索可以发现这一点。连接池的定义,其中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?