首页 新闻 会员 周边 捐助

签到的并发问题

0
悬赏园豆:10 [已解决问题] 解决于 2015-04-27 16:12

需求是用户当天只能签到一次,我是这样设计的,每次签到的时候,先去数据库中签到记录表中查询当天是否已经有签到的记录,有则提示已经签到,没有则进行签到.

问题是:如何避免当并发大或者系统慢的时候用户多次签到的问题? 应该怎么设计才能避免同类的问题出现?

wulawulaho的主页 wulawulaho | 初学一级 | 园豆:74
提问于:2015-04-24 16:47
< >
分享
最佳答案
0

用户表加一个状态,

放在一个事务中,

update 用户 set 状态=签到中 where 用户id=id and 状态=正常

签到逻辑....

用户状态修改回去,提交事务

收获园豆:7
吴瑞祥 | 高人七级 |园豆:29449 | 2015-04-24 16:56

或者用merge into 语句,具体做法百度去

吴瑞祥 | 园豆:29449 (高人七级) | 2015-04-24 17:03

@吴瑞祥: 可以不可以把验证签到和签到的逻辑都放到一个静态方法中,然后加锁?

wulawulaho | 园豆:74 (初学一级) | 2015-04-24 17:51

@wulawulaho: 别这么业余.....

吴瑞祥 | 园豆:29449 (高人七级) | 2015-04-24 21:35
其他回答(3)
0

update table where r1 != r1

收获园豆:1
Launcher | 园豆:45050 (高人七级) | 2015-04-24 16:54

没看明白...

支持(0) 反对(0) wulawulaho | 园豆:74 (初学一级) | 2015-04-24 17:03
0

开放式并发控制字段

收获园豆:1
秋天不会来 | 园豆:320 (菜鸟二级) | 2015-04-26 20:27
0

没有明确的峰值?锁的级别应该是row,程序中无需锁2楼的SQL就很好。

收获园豆:1
童同 | 园豆:258 (菜鸟二级) | 2015-04-27 16:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册