【问题标题】:Connection pooling in SQL SERVER (express)- recommended amount?SQL SERVER(express)中的连接池 - 推荐数量?
【发布时间】:2009-10-01 14:00:59
【问题描述】:

对于我用于连接池的每个应用程序是否有推荐的连接数量..,我的应用程序在“相同”服务器上针对 sql express 使用 asp.net 和 c#。

我有 5 个应用程序正在运行,它们没有被大量使用,所有连接都打开和关闭..

所以我正在考虑将每个应用设置为 min pool = 5

所以这 5 x 5 = 25

sql express 可以处理 25 个连接...实际上是 5 个池和每个池 5 个连接吗?

我可以增加到十个吗?是否有必要将 MAX 池属性放在连接字符串中以确保每个池不会超过一个数字?

非常感谢任何帮助

【问题讨论】:

    标签: c# sql-server ado.net connection-pooling


    【解决方案1】:

    连接数无关紧要。你可以让连接池大小默认为100。

    重要的是请求的数量。 SQL Express 的限制之一是它只运行一个scheduler,因此实际上它只使用一个 CPU 内核。这限制了可以处理的请求数。没有硬性限制,只是在您开始注意到应用程序性能下降之前,一个 CPU 内核只能处理一定数量的工作(请求需要更长的时间才能完成)。

    Express 的第二个重要限制是最大 1 GB buffer pool size。这限制了可以缓存的数据量和过程缓存的大小。结果是更短的内存页生命周期和更高的 I/O,以及更频繁的计划编译。所有这些再次导致性能逐渐下降。

    正如您在 SQL Express 中看到的那样,您没有达到硬性限制并且它停止工作,只是受限于它分配的硬件资源,结果是有限的整体吞吐量。当您接近吞吐量限制时,性能开始下降。

    在旧版本的 MSDE 上,查询限制为 5 个并发请求,在第 6 个请求时,MSDE 引擎会人为地减慢自身速度。

    【讨论】:

      【解决方案2】:

      这取决于你使用的是什么版本的 sql server,但是对于 SQL Server 2005 express,连接没有限制,所以你应该没问题。

      限制已注明here

      【讨论】:

      • 我有 unsing sql server 2008 express,但我指的是数量,25(5 个池和每个池 5 个连接)非常低,所以我什至可以为每个池增加 10 个或更高? ...我不确定它是否会影响性能,或者它会开始影响性能的池/连接数量。
      • @OrbMan 那是因为在连接方面没有任何限制
      • @Mark 如果您想了解性能,那么最好的办法就是对其进行测量。有太多的东西进入性能。最好对您的系统进行基准测试并从那里开始。
      【解决方案3】:

      理论上,SQL Express 可以处理与它的老大哥 SQL Server 相同数量的连接,即 32,767。但是...... SQL Express 会在达到这个数字之前就遇到它的内存限制,因为它被限制为使用 1 GB 的 RAM。

      【讨论】:

      • 最后一点,不要花时间担心场景中的连接池。 SQL 和 ADO.NET 的默认设置将为您优化使用。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-05
      • 2014-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多