使用每分钟大量的数据库请求来优化应用程序

Jit*_*oli 5 .net architecture sql-server performance sql-server-performance

我必须free demo在我的应用程序中为最终用户提供一些服务.对于新用户而言,免费演示可以是30 mins, 1 hours, 5 hours等等(predefined time仅一次).

用户也可以消耗部分时间.比如在30分钟的免费演示中,他们今天可以使用10分钟,明天15分钟,第二天剩下的时间等等.现在如果用户选择30分钟的免费演示并登录并使用该服务.我可以通过他的开始时间和结束时间限制用户30分钟.如果开始和结束时间的总和等于30分钟,我可以将它们发送到付款页面.

现在问题出现了一些不确定的情况,例如用户关闭浏览器或他们的互联网在活动会话期间停止工作或其他任何事情.在这种情况下,由于缺乏终结时间,我无法计算他们的消耗时间.

场景可能如下(30分钟演示).

UserID  StartTime           EndTime             Consumed(mins)
10      09-04-2015 10:00    09-04-2015 10:10        10
10      10-04-2015 05:00    10-04-2015 05:04        4
10      11-04-2015 07:46    11-04-2015 07:56        10
10      11-04-2015 10:00    // Browser closed or any uncertain condition
10      11-04-2015 11:00    // How to restrict user to use actual 30 mins because I do not have EndTime in above row to calculate Consumed mins.
Run Code Online (Sandbox Code Playgroud)

我当时可能有超过10万用户使用我们的服务,所以我找到了一个有效的解决方案.

根据我的理解,我可以创建一个单独的工作来检查用户的LastActiviteTime,并根据我可以更新他们在数据库中的消费(分钟).该Job将每分钟执行一次,另一方面,每个会话用户的浏览器将更新LastActiveTimein数据库.

这可以解决我的问题,但由于每分钟有大量的数据库请求,我不太确定我的应用程序的性能.

Rol*_*n C 1

您也可以使用 JavaScript 通过客户端脚本进行开始时间、结束时间验证,并将开始时间、结束时间存储在浏览器 cookie 中并运行及时脚本(每分钟执行一次的 java 脚本),因此如果客户端验证失败本身您不需要在服务器(数据库)端验证它,这样就会减少对数据库的大量用户查询。