ADO.NET连接池和SQLServer

3
  • 什么是它?
  • 如何使用MS SQL实现连接池?
  • 在以下情况下,性能会有什么影响:
    • 连续执行许多查询(即使用循环进行30K+次迭代调用存储过程)?
    • 执行需要长时间(10分钟以上)的少量查询?
  • 有没有最佳实践?
4个回答

3
连接池是一种重新使用连接的机制,因为建立新连接是很慢的。
如果您使用MSSQL连接字符串和System.Data.SqlClient,则已经在使用它 - 在.Net中,大多数情况下这些都是在后台进行的。
30k次迭代的循环可能更适合作为服务器端游标(查找T-SQL游标语句),具体取决于存储过程之外每个步骤所做的事情。
长查询是可以的 - 但在网页中调用它们时要小心,因为Asp.Net并不真正针对长时间等待进行优化,并且某些连接将会中断。

2
关于连接池的更多信息...您已经在使用SqlClient时使用了它,但仅当每个新连接打开时您的连接字符串是相同的。我的理解是,框架会自动池化连接,但如果连接字符串从一个连接到下一个略有不同,那么新连接将不会来自池 - 它会被创建为新的(因此更昂贵)。
您可以使用XP/Vista中的性能监视器应用程序来观察SQL连接,并且您很快就会看到是否正在使用池化。在性能监视器中查找“.NET CLR Data”类别。

0
我赞同Keith的观点;如果你要调用一个存储过程30,000次,那么你面临的问题比连接池还要大得多。

-3

你的问题也在这个帖子中得到了部分回答。如果进行搜索,就会发现这一点。连接池的定义可以通过谷歌来回答,第一个结果是这个

这样就只剩下最佳实践了,我认为这是一个好问题 :)

+1 给Keith's Answer。他说得非常到位。

FAQ中提醒大家:

在向我们提问之前,您是否已经在互联网上进行了搜索,并搜集了与您的问题相关的研究和信息呢?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接