首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >保留一个到数据库的连接或根据需要打开或关闭

保留一个到数据库的连接或根据需要打开或关闭
EN

Stack Overflow用户
提问于 2011-06-01 14:17:15
回答 3查看 440关注 0票数 3

我在下面的案例中寻找一种最佳实践,并说明为什么每种方法都更好。

我有一个数据库与大约10~20个客户端应用程序,连接到一个主数据库服务器。

在极少数情况下,每分钟可能有大约200次从一个客户端到数据库的调用。

应用程序是多线程的,每个应用程序大约有20个线程。

这里的最佳实践是在每个应用程序中只保留一个到DB的连接,并在每个应用程序中重用它。或者打开每个需要的呼叫的新连接并快速关闭它们。

我们正在使用oracle和sql-server。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-01 14:19:20

.NET oracle提供程序具有内置的连接池功能。每当您需要一个DB连接时,创建一个新的连接,完成工作并立即释放它。连接池将负责高效地重用连接。

释放连接的最佳方式是通过using构造,该构造将确保即使发生异常也会释放连接。

代码语言:javascript
复制
using(OracleConnection connection = ConnectionFactory.Create())
{
    connection.DoStuff();

} //connection.Dispose() called here.
票数 3
EN

Stack Overflow用户

发布于 2011-06-01 14:19:08

最佳实践是尽快处理连接。从技术上讲,连接不会关闭,只是返回到池中,并将被其他线程重用。

SQL Server Connection Pooling (ADO.NET)

引用自MSDN:

强烈建议您在使用完连接后始终将其关闭,以便连接返回到池中。可以使用Connection对象的Close或Dispose方法或通过打开using语句中的所有连接来完成此操作。

票数 1
EN

Stack Overflow用户

发布于 2011-06-01 18:32:35

它最终是关于您需要在哪里(如果有的话)限制您的连接。在一个纯粹的web应用中,你不能冒险让几千人同时点击帖子。另一方面,内部业务应用程序可能只有半打用户。

您的数据库是否可以处理每分钟进行200次调用的20个客户端?独立的线程会对数据库进行并行调用吗?

我倾向于每个客户端都有自己的连接池。

是否有一些客户比其他客户更重要?如果是这样,那么您可能需要一个客户端具有20个连接,而其他客户端具有10个连接。

任何像样的数据库设置都应该能够处理数百个连接,并且如果它们都尝试一次ping,就不会崩溃。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6197024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档