【发布时间】:2014-01-23 23:47:27
【问题描述】:
场景:
- ASP.Net 4.5 Web 应用程序可捕获用户对视频的“投票”。
- 每次投票后,SQL Server 2012 存储过程都会计算视频的投票总和。
问题:
- 少量的选票在性能方面很好。
- 当投票达到 100,000+ 时,查询可能需要 10+ 秒才能完成(不可接受的等待时间)。
问题:
- 每 15-30 分钟运行一次的 SQL Server 作业是否可行?
- 能否将 SUM 结果“缓存”在表格列中以供 Web 应用使用?
- 当 Web 应用访问相同的值时,作业更新缓存的 SUM 是否存在任何问题?
【问题讨论】:
-
那个 SPROC 除了 SUM 还做了什么吗? SUM 应该不会花很长时间。
-
只是 SUM(实际时间有点夸张)。会有一个处理时间太长而无法等待的点(可能更像是数百万),因此需要某种缓存。另外,我不希望每个投票同时触发相同的查询,因为这肯定会影响性能。
-
存储过程可以计算 SUM = 当前 SUM +/- 1,而不是每次聚合吗?
-
这样计算会不会有并发问题?比如说,3票同时进来?
-
如果总和存储在他们自己的表中,那么不会。执行该过程 3 次将导致 3 次更新。
标签: c# asp.net sql-server performance caching