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

4 回答 4

3

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

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

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

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

于 2008-08-12T20:53:40.690 回答
2

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

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

于 2008-08-12T21:07:35.233 回答
0

我支持基思;如果您调用存储过程 30,000 次,那么您遇到的问题要比连接池大得多。

于 2008-08-12T21:13:21.850 回答
-3

此线程也部分回答了您的问题。搜索会发现这一点.. 连接池的定义,谷歌会回答第一个命中是这个..

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

+1 对基思的回答。他一针见血。

只是来自常见问题的礼貌提醒:

您在提出问题之前已经搜索了互联网,并且您带着有关您的问题的研究和信息来到我们这里......对吗?

于 2008-08-12T21:32:20.643 回答