【发布时间】:2017-08-12 16:30:08
【问题描述】:
我知道当您与数据库建立连接时,ADO.NET 会在内存中创建一个池。我知道当我们关闭连接或处理连接时,它不会从内存中删除。只要连接字符串相同,就会从连接池中获取连接。我有两个与此相关的问题:
- 这个连接池什么时候会从内存中释放出来?
- 听说 ADO.NET 在分布式事务(事务范围)的情况下不使用连接池。是真是假?
【问题讨论】:
我知道当您与数据库建立连接时,ADO.NET 会在内存中创建一个池。我知道当我们关闭连接或处理连接时,它不会从内存中删除。只要连接字符串相同,就会从连接池中获取连接。我有两个与此相关的问题:
【问题讨论】:
1) 连接池在空闲大约 4-8 分钟后从池中删除连接。 ADO.NET 2.0 还提供了两种清除池的新方法:ClearAllPools 和 ClearPool。 ClearAllPools 清除给定提供程序的连接池,ClearPool 清除与特定连接关联的连接池。
2) 这是真的。
有关信息,您需要登记一个在打开连接后启动的事务,您可以使用您正在使用的提供者的 DbConnection 对象的 EnlistTransaction 方法登记一个现有的分布式事务。加入现有分布式事务可确保,如果事务被提交或回滚,则数据源代码所做的修改也将被提交或回滚。
【讨论】: