Atomicity Consistency Isolation Durability(原子性、一致性、隔离性、持久性),或称(ACID),由 Andreas Reuter 于 1983 年提出。它是数据库管理系统(DBMS)中的一个概念,它标识了一组用于保证数据库可靠性的标准属性。ACID 属性可确保所有数据库事务保持准确且一致,并支持从处理操作期间可能发生的故障中恢复。因此,几乎所有关系数据库都实现了它。
事实证明,为事务提供支持的 DBMS 会自动强制实施四个 ACID 属性。在今天的文章中,我们将学习事务如何做到这一点。在即将发表的文章中,我们将研究如何在存储过程中使用事务来防止数据不一致。
事务的说明
在存储过程中使用事务之前,了解什么是事务可能对我们有帮助。简而言之,事务是执行的一组操作,它保证所有操作是作为一个单元執行成功或執行失败。
例如,我们将钱从支票帐户转移到储蓄帐户。这个动作实际上由两部分组成:
- 从支票帐户中提取资金。
- 将资金存入储蓄帐户。
现在,想象一下如果第一步之后停电了会发生什么。如果从支票帐户中扣除了资金但未将其添加到储蓄帐户中,我认为我们都同意那是一个问题!正如你不希望在财务交易中发生这种情况一样,我们也不希望更新一个数据库表而没有更新引用它的表。通过使用事务,可以保证两个操作一起成功或一起失败。这样,所有涉及的实体将保持一致状态。
ACID 与事务
事务在强制实施四个 ACID 属性(Atomicity、Consistency、solation 和 Durability)中起着关键作用。让我们看看是如何做到的。
原子性(Atomicity)
如果无法将一个数据库操作进一步分解为不同的操作,则该数据库操作被视为原子(atomic)操作。而事务也是原子的,因为事务中发生的所有操作要么一起成功,要么一起失败。如果任何单个操作在事务过程中失败,则一切都被视为失败,并且必须撤消(回滚)到事务发生前的状态。
一致性(Consistency)
使用事务的主要好处之一是,无论事务是否成功完成,它都能使数据库处于一致的状态。这确保了事务修改的数据符合列的所有约束,从而保持数据完整性。
隔离性(Isolation)
每个事务都与其他事务隔离。因此,一个事务不应影响同时运行的其他事务。换句话说,一个事务进行的数据修改应与其他事务进行的数据修改隔离。因此,虽然一个事务可以看到数据在其他并发事务对其进行修改之前以及完成之后所处的状态,但它看不到数据在事务中的任何状态。
持久性(Durability)
事务可以通过几种方式帮助提高持久性:不管发生任何事情,一个成功的事务中发生的数据修改都可以视为已存储在数据库中。完成每个事务后,在数据库事务日志中会输入一行。因此,如果系统故障时要求从备份中还原数据库,则可以使用此事务日志将数据库恢复到事务成功后的状态。
总结
事务是在数据库中强制实施四个 ACID 属性的一种绝妙方法。在今天的文章中,我们了解了事务如何做到这一点。在下一篇文章中,我们将研究如何在存储过程中使用事务来防止数据不一致。