在多用户系统中,什么是数据库事务并发执行?为什么需要并发控制?

13

在多用户系统中,数据库事务的并发执行是什么意思?为什么需要并发控制?

我对此感到困惑。有哪些非正式的并发控制例子可以提供帮助。

4个回答

16

在多用户系统中,数据库事务的并发执行意味着任意数量的用户可以同时使用同一个数据库。为了避免数据库的不一致性,需要进行并发控制。

下面是一个示例,展示了这种情况如何导致不一致性:

假设有两个用户Alice和Bob,他们都可以访问同一个银行账户。Alice想要存入100美元,而Bob想要取出200美元。假设账户里有500美元,如果他们同时执行操作,执行过程可能如下:

  1. Alice获取初始金额(x=$500)
  2. Bob获取初始金额(x=$500)
  3. Alice存入$100(x+100)=$600
  4. Bob取出$200(x-200)=$300
  5. Alice保存新余额($600)
  6. Bob保存新余额($300)

此时的新余额应该是$400,但是数据库处于不一致状态。

通过向Alice提供对数据库的临时“锁定”,并发控制可以防止不一致性。


好的解释。如果DBMS将这些操作排队并逐个执行,那么就不需要并发,对吧。用户Alice和Bob可能同时请求DBMS执行它们的事务,但如果DBMS一个接一个地执行它们,那么就不需要并发,对吧。我的问题是 - 并发只在多处理器/多节点系统中需要,还是在单处理器/单节点系统中也有所不同? - kaushalpranav

5

好的,这很简单...比如说你有一家银行,同时有两个人尝试从一个余额为100欧元的账户中取出100欧元,这些操作是并发的。

你需要确保只有一个人成功取出100欧元。这就是并发处理。


问题是哪一个可以进行撤回?是基于时间戳吗?还是随机的?或者是其他什么原因?今天关系型数据库如何处理这个问题? - user1870400

0

我的英语不是很好,但我会尽力回答所提到的术语。

在我看来,这个动作将会非常快,以至于似乎同时由多个用户完成工作。同时进行工作意味着并行执行工作,但在并发情况下并不会发生这种情况。

并发是指两个任务可以在重叠的时间段内启动、运行和完成。这并不一定意味着它们将同时运行。

例如:在单核机器上进行多任务处理。


-1
在多用户系统中并发执行数据库事务是指任意数量的用户可以同时使用同一个数据库。需要并发控制以避免数据库中的不一致性。 例如 假设在一个组织中有两个管理员 Oliver 和 Gorge,他们都可以访问同一个用户数据库记录。Oliver 正在尝试更新特定用户的一条记录,同时 Ross 也在尝试更新同一用户的一条记录。如果没有适当的处理同时访问这些数据的方法,那么该用户更新后的数据的最终结果可能会不准确。

抱歉,但你为什么要复制并粘贴另一个答案在这里,而且还格式很差呢? - Jaques

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接