【问题标题】:When connection pool will be released from memory In ADO.NET?在 ADO.NET 中,连接池何时从内存中释放?
【发布时间】:2017-08-12 16:30:08
【问题描述】:

我知道当您与数据库建立连接时,ADO.NET 会在内存中创建一个池。我知道当我们关闭连接或处理连接时,它不会从内存中删除。只要连接字符串相同,就会从连接池中获取连接。我有两个与此相关的问题:

  1. 这个连接池什么时候会从内存中释放出来?
  2. 听说 ADO.NET 在分布式事务(事务范围)的情况下不使用连接池。是真是假?

【问题讨论】:

    标签: c# asp.net .net ado.net


    【解决方案1】:

    1) 连接池在空闲大约 4-8 分钟后从池中删除连接。 ADO.NET 2.0 还提供了两种清除池的新方法:ClearAllPools 和 ClearPool。 ClearAllPools 清除给定提供程序的连接池,ClearPool 清除与特定连接关联的连接池。

    2) 这是真的。

    有关信息,您需要登记一个在打开连接后启动的事务,您可以使用您正在使用的提供者的 DbConnection 对象的 EnlistTransaction 方法登记一个现有的分布式事务。加入现有分布式事务可确保,如果事务被提交或回滚,则数据源代码所做的修改也将被提交或回滚。

    【讨论】:

    • 感谢@orhun 的回答。我们可以设置任何时间值来删除连接池吗>
    • 实际上可以。但是有很多方法可以清除您的连接。正如我所提到的,您可以调用 ClearPool 方法,而且(最好的处理方式)您可以对每个操作使用“使用”,这样您就可以处理每个连接。还有一个主题,你可以看看。 stackoverflow.com/questions/2748706/…
    • 2) 确实如此。你的意思是只有当 TransactionScope 使用 MS-DTC 时才为真,如果不升级到 MS-DTC 则为假,对吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-07
    • 1970-01-01
    • 2015-12-04
    • 2021-07-13
    • 1970-01-01
    • 2014-08-06
    • 2013-05-01
    相关资源
    最近更新 更多