多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# DBMS 中的 ACID 属性 > 原文: [https://beginnersbook.com/2015/04/acid-properties-in-dbms/](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 美元之前)。 * **隔离**:对于每对事务,只有当另一个事务完成执行时,才会开始执行一个事务。我已经在上面的一致性属性中讨论过隔离的例子。 * **持久性**:一旦事务成功完成,即使系统出现故障,它对数据库所做的更改也应该是永久性的。数据库系统的恢复管理组件可确保事务的持久性。