5

我一直在 ASP.net 中开发一个 Web 应用程序。我的应用程序有几个页面,所有页面都需要显示由数据库填充的表。现在我正在做的是,在每个页面上,我打开一个数据库连接,执行特定于该页面的查询,然后关闭数据库连接。因此,每次用户单击链接以转到新页面或单击诸如网格页面之类的表单控件时都会发生这种情况。

我想知道从性能的角度来看这是否是一场灾难。有没有更好的方法来做到这一点?

4

4 回答 4

11

几乎普遍地,数据库连接应该按如下方式处理:尽可能晚地打开,并尽快关闭。打开和关闭多个查询/更新......不要认为让它打开可以为您节省任何东西。因为连接池通常可以很好地帮助您管理连接。

在单个页面的制作中打开/关闭几个/几个连接是非常好的。试图在页面视图之间保持单个连接打开是非常糟糕的......在任何情况下都不要这样做。

基本上,使用连接池(几乎所有提供程序默认启用),“关闭”连接实际上只是将其释放回池以供重用。试图让自己保持开放会束缚有价值的联系。

于 2012-07-06T06:32:43.543 回答
3

这正是你想要的样子。数据库连接只应在必要时打开并在使用后立即关闭。

您可能想要查看的是缓存,尤其是在性能对您来说是个大问题的情况下。您可能想要缓存整个页面,或者只是页面的一部分,或者只是您希望在页面上显示的数据。通过这种方式,您将节省大量的数据库访问,但您现在必须考虑其他事项,例如何时更新缓存、为不同用户缓存等。

于 2012-07-06T06:37:09.540 回答
3

来自MSDN - ADO.Net 中的最佳实践

高性能应用程序在最短的时间内保持与正在使用的数据源的连接,并利用连接池等性能增强技术。

您所做的一切都很好,打开连接以执行查询,然后关闭它。如果您保持连接的时间较长,并且有多个人访问您的应用程序,那么您可能会用完通常在数据库上设置的连接限制。

于 2012-07-06T06:37:38.460 回答
2

将数据库连接绑定到后端代码是一种不好的做法。在您学习的过程中,我建议您使用 Web 服务与 UI 进行交互,而不是将您的数据交互链接到 UI。

Like UI(Aspx Page ) >> BLL (业务逻辑层)>> DAL (数据访问层)

还可以尝试在 DAL 中使用“使用”关键字并在数据库交互之后处理连接以及所有操作

于 2012-07-06T06:37:54.717 回答