【问题标题】:what is meant by the concurrent execution of database transactions in a multiuser system? why concurrency control is needed?在多用户系统中并发执行数据库事务是什么意思?为什么需要并发控制?
【发布时间】:2011-08-09 00:16:40
【问题描述】:

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

我遇到了麻烦。以及并发控制的一些非正式示例。 任何帮助将不胜感激。

【问题讨论】:

    标签: database concurrency


    【解决方案1】:

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

    【讨论】:

    • 对不起,为什么你在这里复制并粘贴另一个答案,然后它的格式也很糟糕?
    【解决方案2】:

    我的英语不太好,但我正在尽力回答提到的术语。

    在我看来,这个动作太快了,看起来好像是同时按用户数量来完成工作。同时做工作意味着并行地做工作,但在并发的情况下不会发生这种情况。

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

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

    【讨论】:

      【解决方案3】:

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

      以下是这种情况如何导致不一致的示例:

      假设我们有两个用户 Alice 和 Bob,他们都可以访问同一个银行帐户。爱丽丝想要存入 100 美元,而鲍勃想要提取 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 一个接一个地执行,则不需要并发权限。我的问题是 - 仅在多处理器/多节点系统中才需要并发,还是在单处理器/单节点系统中有什么不同?
      【解决方案4】:

      嗯,就这么简单...假设您有一家银行,同时有两个人试图从一个有 100 欧元的帐户中提取 100 欧元。这些是并发操作。

      您需要确保其中只有一个人设法提取 100 欧元。这是并发处理。

      【讨论】:

      • 问题是他们中的哪一个可以退出?它基于时间戳吗?是随机的吗?或者是别的什么? rdbms 今天是怎么做到的?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-09
      • 1970-01-01
      • 2011-01-18
      • 2022-12-15
      • 1970-01-01
      • 1970-01-01
      • 2011-06-26
      相关资源
      最近更新 更多