【问题标题】:Data driven design problem - data counting数据驱动设计问题——数据计数
【发布时间】:2009-01-11 13:27:58
【问题描述】:

我想向我的用户提供大约 10 种不同的“统计信息”。每个统计数据代表我的数据库的不同查询返回的计数。每个统计/查询特定于当前用户。实现这一目标的最有效方法是什么?我是否认为在我网站的每个页面上为每个用户运行统计查询(为他们提供实时图片)不是最好的方法?

建议。

编辑:

我的工作基于 100 到 1000 个并发用户。

【问题讨论】:

  • 您期望有多少并发用户?

标签: asp.net sql-server database performance


【解决方案1】:

我的第一个想法是,这是第一次很难做到完美的事情之一,因此请尝试确保您的设计能够改变您做事的方式。例如。有一个返回 UserStats 对象的 GetUserStats 函数,因此您的站点中只有一个地方实现了此逻辑。这应该会让以后更容易改变。

您是对的,您不希望每页有多个查询。我不是一个数据专家,但我认为一次性返回用户所有统计信息的单个存储过程将是一个好的开始。这将允许更改统计信息的计算/更新方式(查询、批处理、触发器等),而无需对您的代码进行任何更改。

【讨论】:

    【解决方案2】:

    你能不能在缓存中存储几分钟的值?特别是如果计算量很大,这将有助于提高性能,同时保持统计数据几乎是实时的。

    但这取决于你有多少用户以及计算成本有多高。

    【讨论】:

      【解决方案3】:

      这完全取决于您的服务器可以处理多少流量和查询,以及这些数字的变化频率以及它们对用户的更新程度。

      ASP.NET 提供了为控件设置特定缓存能力的能力,并使缓存随用户 ID 或您想要的任何其他参数而变化,您可以利用这一点。

      【讨论】:

        【解决方案4】:

        当我在数据库中存储时,我很想保持统计数据的“运行总计”,这是一个在需要时检索数据的简单查询。根据向用户显示的值是否是最新的重要性,可能需要某种缓存。

        我们有许多应用程序在工作,其中数据统计对用户至关重要。使用“运行总计”方法实现将统计信息存储在数据库中的系统已经产生了显着的性能改进。话说我们的并发用户量比你们少很多。

        【讨论】:

        • 您是否使用触发器来维护统计表?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多