乐观锁,相信冲突是低概率事件,那么在commit时才进行检查。
做法:
1) 取数据时同时获取最后更新的时间戳或版本号。
2) 再更新前,用锁记录的方式获取当前时间戳或版本号。
3)若无法锁定,表示正被修改,放弃操作,要求用户重新查询。
4)若可以锁定,比较时间戳或版本号。不同则按 3)进行操作,相同则更新记录,同时修改时间戳或版本号
悲观锁, 认为冲突很可能发生,不希望自己的修改作废。那么在取数据时加锁。
做法
1) 取数据时,锁记录的方式获取修改标志,若可以修改则设定为修改中。
2)修改数据后,或放弃修改后,更新修改标志为可以修改。
---------------------------------------------------------------------------------------------------------------------------------------------------------