gpt4 book ai didi

.net - 如果仍然存在对它们的引用,是否会清除池化 SQL 连接?

转载 作者:行者123 更新时间:2023-12-04 05:30:49 25 4
gpt4 key购买 nike

@usr而我是 having a disagreement in another question关于 .NET 是否会清除已空闲但仍保持引用的打开连接。

我维护,based on documentation ,即如果物理连接闲置一段时间,即使出现SQLConnection,一段时间后也会被回收。对象引用保持不变。

usr 声称这不会发生,它只回收不再有引用的连接。他的断言是,这会使连接池变得不可靠,并且会对事务造成严重破坏。

我承认,文档对保留引用的问题含糊不清。

我正在寻找对此的权威答案,而不仅仅是猜测。要么有人已经实验并证明了这两种情况,要么有人了解内部工作原理。

那么是哪一个呢?

编辑:

我认为这里的混淆与“关闭”的术语有关。情况似乎是文档将关闭物理连接称为从池中“删除”连接。而“关闭”是指将打开的物理连接释放回池中以供重用。

打开的连接仍然可以被中止,但不清楚池化器是否将它标记为无效,如果它仍然被客户端应用程序保持为打开状态(即客户端应用程序尚未在中止的连接上调用关闭)但不确定它是否真的很重要,除了作为池计数的一部分。

最佳答案

我可以 100% 肯定地告诉您连接 回到游泳池直到被释放。我有一个 session 创建一个临时表,并在等待用户输入时将其挂起。用户在 6 分钟后返回,按下按钮并继续 在同一个 SPID 生命继续对抗临时表。

应用逻辑,这是有道理的,因为你能想象如果你因为闲置 X 分钟而丢失 SPID 会造成什么样的破坏吗?您是否应该继续使用命令“ping”SQL Server 以使其保持事件状态? (这会很疯狂)

您似乎混淆了两个概念。当连接关闭时,它返回到池中。如果超出范围,则隐式关闭 -> 返回到池中。对“空闲”的引用是指连接 时在游泳池变得空闲,而不是在它被主动引用且未关闭时。保留的连接甚至不在池中,无法进行任何类型的清理。从池中释放资源是有道理的,因为 Web 应用程序可以轻松地爆发到 100 个连接,然后在接下来的几个月中保持大约 20 个左右的事件并发连接。

关于.net - 如果仍然存在对它们的引用,是否会清除池化 SQL 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12664317/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com