首页 新闻 会员 周边

数据库某个字段的更新策略

0
悬赏园豆:20 [已关闭问题]
有这样一个需求:从逻辑上来讲需要频繁更新数据库,比如一个下载链接,每天的下载量超过了十万次,下次次数这个字段每次都更新的话已经影响到了性能,因此打算采用延时统一更新的方案。在这种思路下,目前想到两个实现方法:<br><blockquote>1.先放到一个txt,每次对txt的值加1再写入,等到一定时间段更新数据库相关字段,但好像无法控制并发。<br></blockquote><blockquote>2.先做标记,然后去刨服务器的请求日志,一定时间段刨一次,找到下载相关的,count一下,然后写入数据库对应字段。<br></blockquote>想在这里听听各位的意见,集思广益一下,先谢过了。<br>
雨哲的主页 雨哲 | 初学一级 | 园豆:80
提问于:2008-07-21 12:46
< >
分享
其他回答(1)
0
记到文本文件里解决不了问题,一个是并发,另外IO操作也是很消耗资源的,服务器日志MS也是很麻烦的一件事 可以考虑把这些东西放到内存里,想来每天10万次,应该是访问量很大,那么值得把这些信息缓存到内存中,定期与数据库同步 这个定期可以是几秒钟,也可以是几分钟,因为30秒一次和1分钟一次,两者并不会对数据库造成太大的影响
丁学 | 园豆:18730 (专家六级) | 2008-07-21 15:31
0
"比如一个下载链接,每天的下载量超过了十万次" 这个的确该用缓存了,需要自己实现一个(简单实现功能即可,根据具体业务实现缓存的更新策略),数据库的缓存机制不可能那么智能(2000的话还可以自己定义一些固定缓存项,2005认为他自己很聪明了,所以没辙。虽然那个选项仍然存在,不过建议别用,用了也白用,呵呵) 只用一个线程去更新访问数,这时直接行锁,因为取数据时访问的是缓存,不会对数据库造成压力的,而且并发也解决了。当然,更新缓存中的访问数时,还是要确保线程安全的,毕竟是临界资源嘛
电机拖动 | 园豆:1295 (小虾三级) | 2008-08-03 18:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册