【问题标题】:Database Maximum pool connection size数据库最大池连接大小
【发布时间】:2020-05-15 08:57:04
【问题描述】:

我在Connection pool 上阅读了几篇文章,这些文章让我了解了它的工作原理,但我有一些疑问需要帮助。

根据我的连接池语法

据我这里是sql连接字符串连接池的实现是:-

Data Source=.\SQLEXPRESS;Initial Catalog=DBName;User Id=sa;password=123456789;MultipleActiveResultSets = True;Connection Lifetime=0;Min Pool Size=0;Max Pool Size=100;Pooling=true;"

最大池大小如何工作?

  • 它是否将每个关闭的连接都转移到连接池中?
    • 如果是这样,那么它会因为Max Pool Size=100而维持100个这样的关闭连接吗?
    • 连接池中这些已关闭的 100 个连接是否仍算作与 SQL Server 的活动连接?
    • 如果是这样,如果多个用户尝试连接,SQL Server 是否会耗尽连接?
  • 什么时候清除连接池?
    • 是自动清除还是我们必须手动清除?

如果您能帮助我解决上述问题或指导我阅读内容丰富的文章或视频,那将非常有帮助。

【问题讨论】:

    标签: sql-server-2008-r2 database-connection connection-string connection-pooling


    【解决方案1】:

    默认情况下启用 ADO.NET 连接池,并且默认连接池设置(例如 Max Pool Size=100)对于大多数应用程序来说已经足够了。有关权威答案和详细信息,请参阅 SqlConnection.ConnectionStringADO.NET connection pooling 文档。

    总而言之,连接在关闭/处置时会返回到池中。这些未使用的池连接在 SQL Server 中技术上并不活跃,但处于休眠状态等待重用。在空闲期(几分钟)后未重用的池连接将物理关闭以减少服务器和客户端上的资源。连接池会自动执行此操作。

    .NET 应用程序中的最佳实践是使用using 块来确保连接在使用后返回到池中,而无需显式关闭它们。

    【讨论】:

      猜你喜欢
      • 2020-01-02
      • 2011-08-13
      • 2020-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-06
      • 2016-08-21
      • 1970-01-01
      相关资源
      最近更新 更多