0

抱歉,如果标题不准确,但我无法在 1 行中解释问题。

场景是这样的:我们有一个网站,显示通过我们的 SQL Server 数据库中不断更新的值计算的实时统计数据。该网站通过 AJAX 每 15 秒更新一次统计信息,每次都会重新计算一次。现在,问题是,当超过 200 人实时统计数据时,它每分钟每 800 次重新计算一次,这几乎是不必要的。

是否可以每 15 秒进行 1 次计算,并在每个用户请求时向他们显示这 1 次计算?

请记住,一些用户可以选择以一种方式显示数据,而其他用户选择以另一种方式显示数据。

4

2 回答 2

2

经过大量阅读和研究后,我得出结论,我需要 XML。

首先,我想要一个更新 XML 表的时间戳。并且只有从那以后发生了 15 秒,才允许更新文档。在检查之后(如果允许则更新),XML 将被循环读取所有数据并创建用户请求的输出。

这意味着,如果实时统计数据的计算每 15 秒发生一次,那么无论当前有多少用户提取数据。但如果没有人拉它,它只会是空闲的。

于 2012-10-31T14:13:51.660 回答
1

如果您需要在 SQL Server 端执行此操作,您可以编写一个存储过程,将计算结果存储在一个新表中。然后它可以每 X 秒刷新一次表中的数据,否则只从表中读取。确保为存储上次刷新时间的位置正确处理锁定,这样您就不会每 15 秒并行刷新表 100 次。我将创建一个表只是为了存储最后一次刷新数据并使用 X-Lock 访问记录。在刷新期间保持锁定,但在读取实际数据之前释放它。


如果您不固定在 SQL Server 端处理这个问题,那么您最好按照@Blazemonger 的建议在应用服务器上缓存数据。

于 2012-10-30T20:39:54.767 回答