高并发时候的事务控制

用户甲的操作
1.开始事务
2.访问表A
3.访问表B
4.提交事务
乙用户在操作
1.开始事务
2.访问表B
3.访问表A
4.提交事务

访问时候,进行了操作。
大神们,怎么来控制比较好处理呢?

上述处理方式会引起典型的死锁dead lock现象。

终极解决方式:使用基于Actor模型的方式(类似ERLang的进程信箱):http://www.jdon.com/45516

以A帐号到B帐号转账为例子:

发出是否可转出消息--->消息队列--->A

A作为一个对象,注意不是数据表,对象是有行为的,检查自己余额是否可转账,如果可以,冻结这部分金额,比如转账100元,冻结100元,从余额中扣除。因为外部命令是通过消息顺序进来的,所以下一个消息如果也是扣除,再次检查余额是否足够......

具体Actor模型也可以参考PPT文档中有谈到Actore模型:
http://www.jdon.com/45436

至于为什么要使用数据+行为的对象设计方式,而不是采取传统的数据喂给线程等方式,见这个帖子:
http://www.jdon.com/45727
[该贴被banq于2013-09-12 06:49修改过]