悲观锁
事务开始到结束一直加锁,以一种大概率会出现有人会争夺资源的心态
乐观锁
在表中增加一个版本号或者时间戳来实现,只有到提交数据的时候才通过一种机制检验数据是否冲突
举例
id | type | number |
---|---|---|
001 | 菜 | 1 |
002 | 肉 | 2 |
悲观锁:线程a,b都想下单菜,假如a获得了锁,b就不能访问,等到a完成事务释放锁之后b才能获得 | ||
乐观锁: | ||
id | type | number |
---- | ---- | ---- |
001 | 菜 | 1 |
002 | 肉 | 2 |
增加一个版本号.当a购买时会拿着id=001,和version=0去购买,完成 | ||
b再去购买拿着id=001,和version=0去购买发现版本号对不上,无法进行 |