【问题标题】:Checking conditions, Doing calculation and filtering records, Doing Database Vs Web Server检查条件,做计算和过滤记录,做数据库与Web服务器
【发布时间】:2012-09-14 16:02:24
【问题描述】:

我对从数据库中检索多条记录有疑问。

案例一:

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

案例2:

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

以上两种情况,哪一种比较可取?

我的想法是,

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

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

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

【问题讨论】:

    标签: sql-server database iis webserver


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2023-02-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-26
        • 2011-04-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多