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

C# 会员系统并发控制 求指导
场景是这样的,有套会员系统,所有的会员数据均保存在一张表里面,每个会员都有一个字段记录账户余额,现在由于每个会员可能是非常多的客户端在使用,所以需要考虑并发问题,一旦账户余额不足立马能够反馈到前台,避免使用同一个会员账号大量并发时,可能会出现账户扣到负值时前台还没反应过来。

目前我采用的Lock机制,将修改会员账户的方法用Lock包裹起来,这样涉及修改会员表数据的方法均会排队等待,虽然存在一定效率问题,但是相对单个用户,感觉还不是很明显。

但是一旦一个账号开放给N个客户端使用时,这样的写法应该会导致系统非常慢,有没有方法可以针对数据库一个表里的一笔数据进行Lock,求大虾指教。


非常感谢。

------解决方案--------------------
  UPDATE Users WITH (ROWLOCK) 
  SET Username = 'fred' WHERE Username = 'foobar'
------解决方案--------------------
如果是BS结构lock用得恰当应该不至于很慢,CS结构的那估计得在服务器端做中间层了。不能让客户端直接访问数据库。