如何提高并发性能

suncheng_hong 2008-11-06 10:45:09
一个投票系统,同时在线N多人,同时投票。如何尽可能真实显示投票个数。
...全文
572 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
supremeholy 2008-12-10
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 dengfeiling 的回复:]
用缓存的方式, 先更新缓存的计数, 然后再看情况间隔地更新表
[/Quote]
顶下
thomaslw 2008-12-04
  • 打赏
  • 举报
回复
楼上说的好 前面的太废话了

人家问高并发 而且反正都是锁,
那么原则是,先接进入,在内存队列中解决实时性,数据库只是作持久存储的
你投票才几个结果阿 。。。说这么多
dandelionl 2008-12-01
  • 打赏
  • 举报
回复
先保存在内存,间隔存入数据库。
dengfeiling 2008-11-27
  • 打赏
  • 举报
回复
用缓存的方式, 先更新缓存的计数, 然后再看情况间隔地更新表
A296286729 2008-11-19
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 bjsuo 的回复:]
1.如何缓冲请求?
有多种方式,简单的可以用一个HashMap来缓冲 key是投票的ID,value是投票的总数,定时或者其它规则的更新到数据库中,但前台显示用这里面存的数据
  复杂一点的可以用memcache

2.数据库如何做这方面的优化?
  保存这类数据的表,不要设置索引,不要设置主键,字段不要太多,越简单越好
[/Quote]


顶上.
cjmiou 2008-11-14
  • 打赏
  • 举报
回复
顶一下
草原可可 2008-11-14
  • 打赏
  • 举报
回复
一个IP 设定一个 屏蔽代理IP
Ny-6000 2008-11-14
  • 打赏
  • 举报
回复
甚至于你一直在更新同一条记录。


大多情况,都如此的。
hecaiyun2003 2008-11-14
  • 打赏
  • 举报
回复
学习学习.
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 suncheng_hong 的回复:]
tmxk2002:
1.如何缓冲请求?
2.数据库如何做这方面的优化?
[/Quote]

如果在内存里做计算,考虑两种情况,一种你的server只有一台机器,这个时候,你可以按投票的项用一个静态的Dictionary<string,long> 来存储。然后调用InterLocked.Increment方法就可以了。然后后台起来一个线程,定时轮询这个dictionary,把每项的结果保存到数据库。轮询的间隔根据对于数据的可靠性要求来定。
如果你的服务器是多台,则在存储的时候要做点手脚,就是保存到数据库里的值总是数据库里的值与内存里的值相加的。做法是,先取内存里的数据,然后清空内存里的数据(这两步的操作在一个lock里做)。将数据传到存储过程,存储过程加上事务保证数据唯一性。

如果你直接在数据库里做,就要建立事务,同时建立行锁,保证数据的一致性。与前面那位兄台相反的是,你必须建立索引来加快每次的查询速度。因为你的操作是更新数据,其他的数据库优化其实不会多,因为你投票的项目不会多。甚至于你一直在更新同一条记录。
林g 2008-11-10
  • 打赏
  • 举报
回复
up
w161134025 2008-11-10
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 bjsuo 的回复:]
1.如何缓冲请求?
有多种方式,简单的可以用一个HashMap来缓冲 key是投票的ID,value是投票的总数,定时或者其它规则的更新到数据库中,但前台显示用这里面存的数据
  复杂一点的可以用memcache

2.数据库如何做这方面的优化?
  保存这类数据的表,不要设置索引,不要设置主键,字段不要太多,越简单越好
[/Quote]
up
bjsuo 2008-11-09
  • 打赏
  • 举报
回复
1.如何缓冲请求?
有多种方式,简单的可以用一个HashMap来缓冲 key是投票的ID,value是投票的总数,定时或者其它规则的更新到数据库中,但前台显示用这里面存的数据
  复杂一点的可以用memcache

2.数据库如何做这方面的优化?
  保存这类数据的表,不要设置索引,不要设置主键,字段不要太多,越简单越好
suncheng_hong 2008-11-09
  • 打赏
  • 举报
回复
tmxk2002:
1.如何缓冲请求?
2.数据库如何做这方面的优化?
  • 打赏
  • 举报
回复
数据库自己会处理的啊,
如果是你自己操作文件来存储,你可以设置一个缓存区,来缓冲外面的请求,就是在内存里计算投票的次数,然后用一个后台线程来处理结果的保存。

zzxap 2008-11-07
  • 打赏
  • 举报
回复
一个IP一个,设定时间段
suncheng_hong 2008-11-07
  • 打赏
  • 举报
回复
不能限制用户的投票。
主要想问如何处理并发问题。
比如说记录 article 表
id title content tptimes(投票次数)

比如很多人对某篇文章感兴趣,都要投它,必然有并发问题,如何如何尽可能真实显示投票个数。
这是个面试题目,求高手解答。
闯荡江湖 2008-11-06
  • 打赏
  • 举报
回复
也想了解下,
chinawes 2008-11-06
  • 打赏
  • 举报
回复
UP
zhao_tk 2008-11-06
  • 打赏
  • 举报
回复
up

25,980

社区成员

发帖
与我相关
我的任务
社区描述
高性能WEB开发
社区管理员
  • 高性能WEB开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧