数据库乐观锁的实现:
在数据库中增加一个version字段。读数据时,将该version读出,更新数据库数据,在update语句的条件中,增加判断条件,只有当前的版本号等于数据库的版本号才去更新数据库,并且在更新时,将version的值也需要加1.
事例如下:
(1) 读数据库中的数据,取得当前version值;
(2) 业务逻辑的处理。
(3) update table set version=version+1 where version = #version#
如果数据库中的version被更改,则会导致更新失败。
悲观锁:
就是在读读数据之前就将数据库锁住,然后更新完之后,再将锁释放。是利用数据库层面的锁机制。
缺点:数据库性能消耗非常大。
在一般的系统中,采用乐观锁。