首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否在并发控制中丢失更新?

是否在并发控制中丢失更新?
EN

Stack Overflow用户
提问于 2009-05-12 22:04:29
回答 3查看 24.5K关注 0票数 0

我有两个事务T和U,它们在一个DB中同时执行。如何提供丢失更新问题的示例?

我们可以假设我们有三个帐户A、B、C,每个帐户分别具有£100、£200和£300。

EN

回答 3

Stack Overflow用户

发布于 2009-05-19 03:24:33

在读取器不阻塞写入器的系统中,“丢失更新”问题与对数据的并发读取和更新有关。事务没有必要完全同时进行。

  1. 会话#1读取帐户A,获得100。
  2. 会话#2读取帐户A,获得100。
  3. 会话#2将帐户A更新为150 (+50),commits.
  4. Session #1将帐户A更新为120 (+20)并提交。

在这种情况下,因为会话#1不知道另一个会话已经修改了帐户,所以会话#2的更新被覆盖(“丢失”)。

有几种方法可以解决这个问题,例如版本号或前后比较。

票数 17
EN

Stack Overflow用户

发布于 2010-07-08 20:40:46

(3)将帐户A更新为150,其中帐户为100 ->帐户A现在为150

(4)将帐户A更新为120,其中帐户为100 ->更新失败,因为帐户A为150而不是100

票数 1
EN

Stack Overflow用户

发布于 2012-07-31 10:43:02

当访问相同数据库项的两个事务的操作以使某些数据库项的值不正确的方式交错时,就会发生这种情况。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/855105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档