乐观锁和悲观锁
悲观锁
事务开始到结束一直加锁,以一种大概率会出现有人会争夺资源的心态
乐观锁
在表中增加一个版本号或者时间戳来实现,只有到提交数据的时候才通过一种机制检验数据是否冲突
举例
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去购买发现版本号对不上,无法进行 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)