我想向用户提供大约10种不同的“统计信息”。每个stat表示由我的数据库的不同查询返回的计数。每个统计/查询都特定于当前用户。什么是实现这一目标的最有效方法?我是否认为对我网站每个页面上的每个用户运行统计查询(为他们提供实时图片)并不是最好的方法吗?
建议表示赞赏。
修改:
我的工作基础是100到1000个并发用户。
答案 0 :(得分:1)
我的第一个想法是,这是第一次难以完美的事情之一,所以尽量确保你的设计能够改变你做事的方式。例如。有一个GetUserStats函数,它返回一个UserStats对象,这样你的站点中只有一个地方可以实现这个逻辑。这应该会让以后更容易改变。
你是对的,你不希望每页多次查询。我不是一个数据人,但我认为一次性返回用户的所有统计数据的单个存储过程将是一个良好的开端。这样就可以对如何计算/更新统计数据(查询,批处理,触发器......)进行更改,而无需对代码进行任何更改。
答案 1 :(得分:0)
您是否可以将值存储在缓存中几分钟?特别是如果计算量很大,这将有助于提高性能,同时保持统计数据的实时性。
但这取决于您拥有多少用户以及计算费用。
答案 2 :(得分:0)
这一切都取决于您的服务器可以处理多少流量和查询,以及这些数字的变化频率以及它们对用户的最新变化。
ASP.NET提供了为控件设置特定可缓存性的功能,并使缓存因userid或您想要的任何其他参数而异,您可以利用它。
答案 3 :(得分:0)
当我去数据库时,我很想保持统计信息的“运行总计”,这是一个简单的查询,可以在需要时检索数据。根据显示给用户的值是最新的重要程度,可能需要某种缓存。
我们有许多应用程序正在运行,其中数据统计对用户至关重要。使用“运行总计”方法实现统计数据存储在数据库中的系统已经产生了显着的性能改进。话虽如此,我们的并发用户数量远远低于你的用户。