Skip to main content

数据库管理系统的ACID模型

9/29 Live: 大比拼!数据科学家常用数据库(Database)哪家强? (六月 2026)

9/29 Live: 大比拼!数据科学家常用数据库(Database)哪家强? (六月 2026)
Anonim

ACID数据库设计模型是数据库理论中最古老,最重要的概念之一。它提出了每个数据库管理系统必须努力实现的四个目标:原子性,一致性,隔离性和持久性。不能满足这四个目标中的任何一个的关系数据库不能被认为是可靠的。具有这些特征的数据库被认为是符合ACID的。

ACID定义

让我们花一点时间详细研究这些特征:

  • 原子性 声明数据库修改必须遵循“全有或全无”规则。每个事务都被称为“原子”。如果事务的一部分失败,则整个事务失败。尽管存在任何DBMS,操作系统或硬件故障,但数据库管理系统仍然保持事务的原子性至关重要。
  • 一致性 声明只有有效数据才会写入数据库。如果由于某种原因执行了违反数据库一致性规则的事务,则将回滚整个事务,并且数据库将恢复到与这些规则一致的状态。另一方面,如果事务成功执行,它将使数据库从一个与规则一致的状态转到另一个与规则一致的状态。
  • 隔离 要求同时发生的多个事务不会影响彼此的执行。例如,如果Joe在Mary发出不同事务的同时向数据库发出事务,则两个事务都应以隔离方式对数据库进行操作。数据库应该在执行Mary之前执行Joe的整个事务,反之亦然。这可以防止Joe的事务读取作为Mary的事务的一部分的副作用产生的中间数据,该事务最终不会提交给数据库。请注意,隔离属性不能确保首先执行哪个事务 - 只是事务不会相互干扰
  • 耐久力 确保任何提交到数据库的事务都不会丢失。通过使用数据库备份和事务日志来确保持久性,这些日志有助于在任何后续软件或硬件故障的情况下恢复已提交的事务。

ACID如何在实践中发挥作用

数据库管理员使用多种策略来强制执行A​​CID。

一个用来强制原子性和耐久性的是 预写日志记录 (WAL),其中任何事务细节首先写入包含重做和撤消信息的日志。这确保了在任何类型的数据库故障的情况下,数据库可以检查日志并将其内容与数据库的状态进行比较。

用于解决原子性和耐久性的另一种方法是 影子分页, 在要修改数据时创建阴影页面。查询的更新将写入影子页面而不是数据库中的实际数据。仅在编辑完成时才修改数据库本身。

另一种策略叫做 两阶段提交 协议,在分布式数据库系统中特别有用。该协议将修改数据的请求分为两个阶段:提交请求阶段和提交阶段。在请求阶段,受交易影响的网络上的所有DBMS必须确认已收到它并且具有执行交易的能力。一旦从所有相关DBMS收到确认,则完成提交阶段,其中实际修改数据。