【问题标题】:What is the connection pool associated with?连接池与什么相关联?
【发布时间】:2009-06-10 05:42:29
【问题描述】:

我正在阅读 .net 中的连接池,但我不确定我是否正确。他们说关闭的连接会返回到池中,以便以后可以重用。但是池与什么相关联?它是数据库还是只是应用程序环境(执行它的计算机)?如果是后者,那么如果您有两个用户在两台不同的计算机上打开他们的应用程序并一个接一个地请求相同的连接,那么连接池并没有什么不同,对吗?

编辑:当然我知道如果同一个应用再次打开同一个连接会有所不同,但是同一个应用的两个不同实例呢?

【问题讨论】:

    标签: .net connection-pooling


    【解决方案1】:

    连接池仅限于客户端 PC,并与连接字符串和身份验证详细信息相关联。

    因此,如果连接关闭并返回池,则只有在连接字符串和身份验证详细信息完全匹配时才会重新使用它。

    【讨论】:

      【解决方案2】:

      连接池只是客户端的一个集合,当您第一次尝试打开与数据库的连接时,它会充满连接。如果您使用完连接对象,它不会被释放,而是返回到可用连接的集合中。

      这样可以提高性能,因为打开和关闭数据库连接可能非常昂贵(想想建立连接所需的网络流量)。

      这是一个很好的关于该主题的启动教程:

      http://www.eggheadcafe.com/tutorials/aspnet/df2b05d8-93ea-49e1-aeaa-d116a4d6ac3b/adonet-connection-poolin.aspx

      【讨论】:

        【解决方案3】:

        ConnectionPoolCollection 实际上是一个包含 ConnectionPool 对象的单例对象。

        您可以通过反射 DbConnection 上的静态函数来测试这一点,以清除单个池或清除所有池。

        ClearAllPools - 从 SQL Server 中的 DbConnection 清除所有池。

        由于对象是单例的,它不能跨进程边界工作。您最终将得到每个进程一个池。

        有一些 ADO.NET 提供程序可以通过使用 COM 对象保存实例引用跨应用程序进程进行池化,但大多数不这样做。

        【讨论】:

          猜你喜欢
          • 2015-01-17
          • 1970-01-01
          • 2013-08-20
          • 2011-03-20
          • 2017-07-26
          • 1970-01-01
          • 2020-06-14
          • 2020-10-19
          • 1970-01-01
          相关资源
          最近更新 更多