0

我怀疑从数据库中检索多条记录。

情况1:

  • 应用联接,从数据库中选择所有记录(选定的列),并在 Web 服务器中进行过滤条件。

案例二:

  • 应用连接,应用过滤条件,在数据库中进行计算,在 Web 中什么也不做,只是显示数据。

在上述两种情况下,哪一种是可取的?

我在想的是,

  • 案例1中DB没有太多工作,但是网络承载了很多数据,Web服务器要做更多的工作。
  • 在案例2中,DB的工作量很大,但网络承载的记录比案例1少,Web服务器的工作量也少。

Web 服务器也是可扩展的,DB 服务器也是可扩展的(假设我的 DB 大小可能不超过 50GB)。

那么我应该在哪里进行过滤和计算以提高性能,为什么?

4

2 回答 2

2

这是一个相当抽象的问题——这将有助于获得一个更具体的例子。

但是,如果通过过滤意味着从结果集中删除不需要的项目,那么这种情况非常适合 SQL 中的“where”子句。

数据库在这方面比您的 Web 服务器快得多,因为它利用了索引。由于数据库向您的 Web 服务器流式传输的数据也较少,因此数据库的整体性能可能会提高,因为在高流量时,I/O 会成为一个重要的瓶颈;如果您将大量数据流式传输到 Web 服务器,那将影响您的 I/O 性能。

在某些情况下,这很难做到——特别是过滤器动态变化的情况。在您的 Web 服务器逻辑中构建有效的 SQL where 子句有点棘手 - 例如,如果您想为用户提供动态构建过滤器。即使那样,我仍然建议在 SQL 中进行过滤。

于 2012-09-14T16:15:08.387 回答
1

我会选择案例 1,因为 RDBMS 非常适合以有效的方式进行选择和过滤。我不会通过网络将所有数据带到 Web 服务器,其中过滤可能涉及浏览每条记录以评估它是否满足过滤条件。

于 2012-09-14T16:09:05.203 回答