# DBMS 中的 ACID 属性

> 原文： [https://beginnersbook.com/2015/04/acid-properties-in-dbms/](https://beginnersbook.com/2015/04/acid-properties-in-dbms/)

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

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