繁体   English   中英

SQL CONNECTION最佳实践

[英]SQL CONNECTION best Practices

目前讨论了具有单个sql连接体系结构的优缺点。

详细说明我们正在讨论的是,在应用程序创建时打开一个sql连接,并在应用程序关闭或错误关闭sql连接。 并且根本不创建另一个连接,而只使用那个连接与DB进行通信。

我们想知道社区的想法。

一旦您不再需要它在一段不确定的时间内关闭连接。 通过这样做,连接返回到连接池(如果启用了连接池),并且可以由其他人(重新)使用。

(连接是昂贵的资源,有时是有限的)。

如果您在应用程序的整个生命周期中保持连接,并且该应用程序有多个用户(因此应用程序的多个实例和多个连接),并且您的数据库服务器仅限于x个并发数连接,然后你可能有问题....

另请参阅ado.net的最佳做法

遵循这个简单的规则......尽可能晚地打开连接并尽快关闭它。

我认为这是一个坏主意,原因有几个。

  1. 如果您有10,000名用户正在使用您的应用程序,则会持续打开10,000个连接
  2. 如果必须重新启动Sql Server,那么所有这10,000个连接都将失效,并且您的应用程序将突然 - 假设您已包含重新连接逻辑 - 正在进行10000次近同步重新连接请求。

要在第1点进行扩展,您应该尽快关闭连接,否则您将耗尽有限的资源,可能是一段无限的时间。 如果您将Sql Server配置为允许最多10,001个并发连接,那么您一次只能有10,001个用户运行您的应用程序。 如果您按需打开/关闭连接,那么您的应用程序将进一步扩展 ,因为所有活跃用户同时使用数据库的可能性实际上很低。

在幕后,ADO.NET使用连接池来管理与数据库的连接。 我建议将其留在连接池中以满足您的连接需求。 在应用程序期间保持连接打开是个坏主意。

我使用名为Richmond Systems的帮助台系统,该系统在应用程序的生命周期中使用一个连接,而作为笔记本电脑用户,它在后面是一个皇家的痛苦。 即使我打开笔记本电脑,无线接入点之间的跳跃也足以降低数据库的连接。 然后该软件抱怨数据库连接,进入错误状态并且不会关闭。 必须从任务管理器手动杀死它。

简而言之, 请勿保持打开数据库连接的时间长于必要时间。

但另一方面,我经常对打开和关闭连接持谨慎态度。 连接池比没有连接池便宜得多,但即使使用池,池管理器也可能决定增加或缩小池,将其转换为昂贵的操作。

我的一般规则是在用户启动某个操作,执行工作,然后在等待下一个用户输入之前关闭连接时打开连接。 对于任何给定的“更新”按钮单击或其他,我通常只有一个连接。 但是你绝对不希望在等待用户输入时保持连接打开,如果你可以为其他人提到的所有原因提供帮助。 您可以在用户按下另一个键或触摸另一个按钮之前等待几天 - 如果他离开计算机并去休假怎么办? 将资源占用不可预测的时间就像是坏消息。 在大多数情况下,等待用户输入的经过时间将远远超过实际工作的时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM