为啥我们需要在 ConnectionString 中设置 Min pool size

Posted

技术标签:

【中文标题】为啥我们需要在 ConnectionString 中设置 Min pool size【英文标题】:Why do we need to set Min pool size in ConnectionString为什么我们需要在 ConnectionString 中设置 Min pool size 【发布时间】:2013-10-13 20:10:12 【问题描述】:

对于 SQL 连接池,为什么我们需要设置最小池大小?由于连接将保存在连接池中并重复使用,为什么我们需要保持最小池大小指定的活动连接?谢谢。

【问题讨论】:

你为什么需要?如果您不指定最小尺寸,则为 0。 @TimSchmelter 我猜他想知道我们到底需要什么?这样做有什么目的吗? @TimSchmelter 是的,我的问题是最小池大小的目的是什么 【参考方案1】:

为什么我们需要保持由最小池大小指定的实时连接

您可能知道创建连接是一项资源密集型工作。因此,如果您的应用程序即使在空闲数小时后仍需要一致的响应时间,您可以选择将其设置为一个较小的数字,例如 5。在这种情况下,第一个用户请求将不必等待这些数据库连接建立。可以阅读池化详情here。

【讨论】:

谢谢。所以,如果我打开连接池,但最小池大小为 0,连接可以在短时间内重用,但会在很长一段时间后关闭。如果我将最小池大小设置为 5,那么至少 5 个连接将永远保持打开状态?我对吗?谢谢【参考方案2】:

打开和维护连接的成本很高,因此如果您知道(总是)需要多个连接,最好指定MinPoolSize,因为这样可以确保这些连接可用。

另外,来自MSDN:

如果MinPoolSize 要么未在连接字符串中指定,要么 指定为零,池中的连接将在一个 不活动的时期。但是,如果指定的 MinPoolSize 更大 大于零,连接池 直到 AppDomain 被销毁 卸载并且进程结束。维护非活动或空池 涉及最小的系统开销。

【讨论】:

谢谢蒂姆!你是怎么找到这个的?我在网上搜索了很多地方,但没有找到这么好的规范。 我刚刚查看了 MSDN 页面并搜索了MinPoolSize

以上是关于为啥我们需要在 ConnectionString 中设置 Min pool size的主要内容,如果未能解决你的问题,请参考以下文章

如何在ConnectionString中加密sql用户名和密码? [关闭]

c# - 在运行时更改 App.Config 后,实体框架 ConnectionString 不会更新

为啥相同的 MySql 查询在代码和工作台中表现不同?

如何从 EF7 DbContext 获取 ConnectionString

using (SqlConnection connection = new SqlConnection(connectionString))

如何配置XenDesktop使用Mirror数据库