DBMS 中的 ACID 属性

  • 翻译
  • 发布时间: 1个月前
  • 收藏数: 0 / 点赞数: 0 / 阅读数: 16

原文: https://beginnersbook.com/2015/04/acid-properties-in-dbms/

为了确保事务期间数据的完整性(事务是一个更新各种数据项的程序单元,请在此处阅读更多相关信息),数据库系统维护以下属性。这些属性被广泛称为 ACID 属性:

  • 原子性 :此属性确保事务的所有操作都反映在数据库中或不反映。让我们举一个银行系统的例子来理解这一点:假设账户 A 的余额为 400 美元& B 有 700 美元。账号 A 正在向账户 B 转账 100 美元。这是一个有两个操作的事务 a)从 A 的余额中扣除 100 美元 b)创建 100 美元到 B 的余额。假设第一次操作成功通过而第二次失败,在这种情况下 A 的余额为 300 $而 B 则为 700 $而不是 800 $。这在银行系统中是不可接受的。如果事务在没有执行任何操作的情况下失败,或者它应该处理这两个操作。原子性属性确保了这一点。
  • 一致性:为了保持数据库的一致性,事务的执行应该孤立地进行(这意味着当事务已经运行时,不应该同时运行其他事务)。例如,账户 A 的余额为 400 美元,它将 100 美元转账到账户 B& C 两者。所以我们在这里有两笔事务。假设这些事务同时运行,两笔事务均为 400 美元余额,在这种情况下,A 的最终余额为 300 美元而不是 200 美元。这是错的。如果事务是在隔离的情况下运行,那么第一笔事务成功后,第二笔事务就会读取正确的余额 300 美元(在扣除 100 美元之前)。
  • 隔离:对于每对事务,只有当另一个事务完成执行时,才会开始执行一个事务。我已经在上面的一致性属性中讨论过隔离的例子。
  • 持久性:一旦事务成功完成,即使系统出现故障,它对数据库所做的更改也应该是永久性的。数据库系统的恢复管理组件可确保事务的持久性。
评论