版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/IUPRG/article/details/19938441
在网络系统实际开发中,经常会碰到这种情况:
多个登陆用户可能会同时修改同一条记录
这样可能会发生:
1) a用户在加载完记录后,b修改保存了数据,对于a来说他的数据被覆盖了;
2)a用户看到的是相对于b修改后比较旧的数据
通常解决办法是设置悲观锁和乐观锁
悲观锁的优点是保证了数据不丢失和一致,缺点是降低了性能;
乐观锁的优点是增加了程序可操作性和可移植性,提高了并发性能,缺点是需要控制好事务并且浪费了用户刚刚输入的数据(因为作废了)
乐观锁,一般使用版本控制法,就是加一个version这样的属性,修改时读出来,保存时和现有version比较,如果一致则保存,同时写入一个新的version;
如果不一致,则回滚并提示“您修改的数据已经过时”,重新读取数据记录再次修改保存之。