【问题标题】:to open sql connection from c# code taken time?从 c# 代码打开 sql 连接需要时间吗?
【发布时间】:2014-01-15 11:55:33
【问题描述】:

其实我对一件事感到困惑。

我有.net 应用程序并使用sql server 2008 用于数据库。

现在,在我的方法 A 上,我正在填充数据读取器。

现在,在 while 循环期间,我通过传递结果的一个属性来调用另一种方法 B。 当时我也打开数据库连接并关闭它。

同样的事情从方法 B 调用另一个方法 C。 那时也打开数据库连接并关闭。

要填写方法 A 的最终列表。这需要时间。

所以,我的意思是。打开数据库连接并关闭它。这个过程很耗时吗?

【问题讨论】:

  • 永远不要在循环中连接到第三方应用程序(sql、ws 或类似的)。起初它似乎无害,但一旦数量增加,它们就会变得非常缓慢

标签: c# asp.net sql-server database


【解决方案1】:

打开数据库连接并关闭它。这是一个耗时的过程

是的。如果启用池并从池中返回连接,则打开和关闭至少需要一次往返,以重置连接。如果连接未池化,则打开和关闭是完整的 SSPI 完整握手。如果使用了 SQL 身份验证并启用了加密,则在 SQL 握手之前进行另一次完整的 SSL 握手以建立安全通道。即使在理想条件下,它也需要 10 毫秒,在增加一些最小网络延迟的情况下,它可能会上升到整秒。

一个编写良好的 ASP.Net 应用程序需要每个请求一个(池)连接,永远不会更多。

【讨论】:

【解决方案2】:

在任何类型的循环中连接到第三方应用程序(数据库、WebService 或类似的)通常都是非常糟糕的做法。这样的交流总是需要比较长的时间。

随着循环中元素数量的增加,应用程序将变得越来越慢。

更好的方法是对所有元素执行操作,然后将所需数据传递到循环逻辑中。

与所有事物一样,存在例外情况,如果您有数百万个实体要处理并且连接的开销很小,那么循环可能会产生以原子方式处理每个实体更有效的情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-30
    • 2016-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-06
    • 2010-10-26
    相关资源
    最近更新 更多