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

解决方案

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

如果您使用 MSSQL 连接字符串和 System.Data.SqlClient 那么您已经在使用它了 - 在 .Net 中,这个东西大多数时候都在幕后。

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

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

其他提示

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

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

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

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

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

+1 至 基思的回答. 。他说得一针见血。

只是常见问题解答中的礼貌提醒:

在问您的问题之前,您已经搜索了互联网,您来到了我们的研究和有关您的问题的信息。正确的?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top