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

计算页面点击率,怎样避免过于频繁地修改表信息.
比如建了一张新闻表[news]
字段news_id,news_hits(记录某篇文章的点击率)
如果文章数目特别多,而且前台用户的访问量特别大.
这样每次访问某篇新闻,都要对[news]表里某篇文章的news_hits里的数据累加.
怎样避免如此频繁地对这张表进行修改啊.我怕对表的修改过于频繁数据库会受不了啊,而且会不会出现死琐现象?

------解决方案--------------------
应该可以使用一个全局变量,在一定的使用内写入到库中
------解决方案--------------------
你这种情况不大可能死锁
------解决方案--------------------
在另一个表中作记录,然后定时更新过去,比如10分钟。

------解决方案--------------------
你这种情况不大可能死锁
查到的记录可能与更新表的记录有时间出入

------解决方案--------------------
这个应该没什么问题吧?应该不会死锁
------解决方案--------------------
?
WangZWang(先来)他的意思应该是定义个全局变量,然后每次更新将全局变量的值加1,最后在需要察看更新次数的时候,将全局变量的值取过来赋值
------解决方案--------------------
不要直接连数据库
上面说的对,先存在外面,要用的时候调用一下就可以了。
其实直接连也没有问题,不用担心的。
------解决方案--------------------
又不是一篇文章,每篇文章都定义一个全局变量是不可能的,还是动态数组,又如何对应数据库……
------解决方案--------------------
comszsoft(星星点灯) 问题是在另一张表内操作,还是每次点击某骗文章都要连接数据库并修改啊.

比如有20万篇文章,在一秒钟内产生了1万的点击量,那在这一秒内就要对数据库的这张表修改一万次啊...


另一个表如 article_hits 存放 文章id,点击次数
1。 每次浏览文章的时候,修改这个表的次数+1
2。作业每10分钟一次,把article_hits 的数据累加到文章表,并truncate table article_hits
重复如上操作
文章表的点击次数每10分钟更新一次,这样也许会更好些。



------解决方案--------------------
关注
------解决方案--------------------

如果我有一个站的一篇文章1s有1W的点击率,那么我就发了。。
------解决方案--------------------
在一秒钟内产生了1万的点击量,这个不太可能吧。
------解决方案--------------------
摆渡和沟沟的数据应该是分类的吧,搜索大类都应该有专用服务器处理,例如MP3服务器,应该不会放在一起。

现在问题是为什么要保留那么多新闻在当前表。

今天的才是新闻,之前的是旧闻,退一步,1个月内算新闻,那好,当前表保留最近一个月的数据,其它数据按月也好按年也好保存起来,这些数据的访问量应该是很少的。

那么,当前表我想不会超过10000条记录,每天300多条新闻不得了啦,我想新浪都到不了这个数。你认为在10000条新闻里,每秒会有多少点击量,我认为峰值的时候都达不到10000/S。

------解决方案--------------------
可以使用存储过程,这样比较快。
你可以测试一下,每秒种能执行这个存储过程多少次。

我用自己的破机测试:执行更新 1 万次,只需要 4 秒钟。
------解决方案--------------------
而且cpu占用率并不高,15% 以下
------解决方案--------------------
我觉得全局变量估计也不行的吧.我觉得可以不可以用借助Oracle的seq特性啊?设置sequence的缓存大小。一次查询出比如说200个序列号。然后用点击率跟SEQ比较。达到某个数字再去数据库查询一次。然后查询SEQ的最后值.比方说是10000的整数的时候,再去更新一下数据库.这样应该比较好吧.我临时想的.可能不是很好的解决方法.
------解决方案--------------------
比如建了一张新闻表[news]
字段news_id,news_hits(记录某篇文章的点击率)
----------------------------------------------

这个表就两个字段,频繁修改没有什么影响,也不会死锁,只要news_id是主键就行了

我觉得这样就很好,不用去想其他的方法,而且既然是新闻那每天应该有多少啊,这么多的东西,用什么保存都不方便,还不如直接写进来
------解决方案--------------------
字段news_id,news_hits_time(记录某篇文章的点击时间)

通过这个时间可以用 count 得到次数
然后也可以前台取 max(news_hits_time) 时间来限定 多久才能插入一次...

0 0 个人觉得这样比较好
------解决方案--------------------
application 变量。 ASP写在asa文件里面,ASP.NEN不大清楚。
------解决方案--------------------