日期:2014-05-18  浏览次数:20467 次

视频点播统计问题
我有20万视频,要统计每个视频的点播次数
如果每个用户点播时去更新数据库,这样数据库压力太大,而且速度慢
所以把视频点播数次放在缓存中,当这次点播时间超过上次点播一定时间时就去更新数据库。这样数据库的压力是不大,可带来另一个问题,就是统计次数的不确定,会带来延时,因为比如晚上没人点播,那最近的一次点播次数还在缓存中保存着。这样同样带来一个问题,如果这时发生比如IIS重启的话,数据都会丢失。
各位高手帮忙想想办法
后来想了下,可以设定缓存的过期时间,比如20分钟超时,在缓存移除事件中去更新统计数量,但同一时间可能会出现太多的过期,又带来压力的问题
各位出出主意

------解决方案--------------------
还真没有好的方法,帮lz顶
------解决方案--------------------
只能按每个用户点播时去更新数据库。
你只能
1.优化数据库,
2.改为存储过程
3.客户端最好是异步写数据库。
------解决方案--------------------
你這個問題可以用寫服務器端的xml文件來解決
------解决方案--------------------
一般都是在SQL上做优化
------解决方案--------------------
我做过,不过也只有用SQL更新数据库,呵呵!有待高人!
------解决方案--------------------
在Sql上用存储过程解决
------解决方案--------------------
呵呵,看看高手怎么解决这个问题。
------解决方案--------------------
学习.
------解决方案--------------------
顶一下!!!!
------解决方案--------------------
呵呵,楼主可以用定时器来解决问题呀:

protected void Application_Start(Object sender, EventArgs e)
{
System.Timers.Timer SrvTimer = new System.Timers.Timer();
SrvTimer.Elapsed += new ElapsedEventHandler(SrvStart);
SrvTimer.Interval = 180000;//1800000毫秒
SrvTimer.Enabled = true;
}

public void SrvStart(Object sender, System.Timers.ElapsedEventArgs e)
{
//在这里放入更新统计的代码;
//A.楼主可以用线程来解决压力问题 :
//B.楼主可以用ADO.NET中的事务更新来更新数据库,安全无太大压力问题,HOHO
}