事务并发,如何解决第二类更新丢失?

济南大飞哥 2019-01-11 09:13:57
如果事务比较小,比如只更新一个资源,那么可以先锁住这个资源再操作;但是如果是个大事务,操作的资源比较多,只能锁住多个资源(因为你不知道哪个资源会同时被其他事务修改),这时如果有其他事务也要而且同时锁定部分或者全部的前个事务的资源,但是锁定顺序不同,就非常容易死锁。so,如何彻底解决第二类更新丢失?不要不加思索,告诉我一个隔离级别就能搞定,我告诉你,除了串行,什么隔离级别都不好使。
...全文
636 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
济南大飞哥 2019-01-15
  • 打赏
  • 举报
回复
引用 2 楼 nayi_224 的回复:
在执行那一大串语句前,锁一个专门用来标记的其他资源,全部执行完后,解开这个锁。
我也想到了这个办法,就是锁细化,逻辑化。但是感觉系统比较复杂代码比较多的时候,一处逻辑这么做, 另一个有资源冲突的不这么做,或者锁了其他资源,就又悲剧了。最主要是你开发一个新功能不知道可能跟谁有冲突, 如果一开始没定下一个统一的开发流程,很难完全规避死锁,只能遇到一个,解决一个。最近系统诡异的出现了几次死锁。
nayi_224 2019-01-15
  • 打赏
  • 举报
回复
在执行那一大串语句前,锁一个专门用来标记的其他资源,全部执行完后,解开这个锁。
济南大飞哥 2019-01-14
  • 打赏
  • 举报
回复
无人?无人?无人?

17,089

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧