【问题标题】:.net connection pooling.net 连接池
【发布时间】:2019-01-03 19:53:33
【问题描述】:

我不明白常规连接和连接池之间的语法区别是什么。

当我使用using 键时,例如:

using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();
    command.ExecuteNonQuery();
}

这是执行连接池的方式吗?

【问题讨论】:

    标签: c# .net ado.net connection-pooling


    【解决方案1】:

    使用 SqlConnection 将连接池的管理从您那里抽象出来,就像上面一样。默认情况下,ADO.NET 连接池是打开的,您可以进一步控制它,例如将其关闭或控制连接字符串中的池大小,例如

    关闭

    Provider=SQLOLEDB;Data Source=localhost;Integrated Security=SSPI;Pooling=false;
    

    或控制最小值和最大值

    Provider=SQLOLEDB;Data Source=localhost;Integrated Security=SSPI;Min Pool Size=5; Max Pool Size=20;
    

    更多细节解释和验证池的方法 http://www.codeproject.com/KB/dotnet/ADONET_ConnectionPooling.aspx

    【讨论】:

      【解决方案2】:

      您不是通过连接而是通过连接字符串来控制连接池。大多数 ADO 提供程序默认使用池化。

      using 语句用于调用对象(在本例中为连接类)的Dispose 方法。通过这样做,连接要么返回到池中,要么根据连接字符串配置断开连接。

      您还应该注意,如果正在使用分布式事务,则连接不会直接返回到池中(.Net 4 中的TransactionScope)。事务完成/回滚时返回连接。

      如果您不使用using,您应该确保尽快致电Connection.Close()。特别是如果您的应用程序处于某种形式的负载之下。

      【讨论】:

        【解决方案3】:

        SQL 连接默认为连接池。 (最大池大小=100)

        您可以从连接字符串配置您的连接池。

        你可以从here找到更多关于连接字符串的信息。

        【讨论】:

          【解决方案4】:

          据我所知,

          连接池由 ado.net 客户端管理,因为与 db 建立连接是一项昂贵的操作。 ado.net 建立连接池,每当您需要连接时,它都会尝试从池中提供连接。即使您对客户端代码说要关闭连接,ado.net 也会保留该连接以供以后使用。你不管理池

          连接池在应用程序的 web.config 文件中被告知。当您使用 using 语句时,您会告诉该对象应该在使用结束时被处置。

          【讨论】:

            【解决方案5】:

            您可以阅读连接池here

            基本上只要连接字符串相同(包括大小写),就会从同一个连接池中获取连接。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2010-09-05
              • 1970-01-01
              • 2012-01-29
              相关资源
              最近更新 更多