ACID

ACID #

In computer science, ACID (atomicityconsistencyisolationdurability) is a set of properties of database transactions intended to guarantee validity even in the event of errors, power failures, etc. In the context of databases, a sequence of database operations that satisfies the ACID properties (and these can be perceived as a single logical operation on the data) is called a transaction.


ACID 是追求 CAP (Consistency, Availability, Partition tolerance) 的一致性 (C)

ACID,是指数据库管理系统DBMS)在写入或更新资料的过程中,为保证事务(transaction)是正确可靠的,所必须具备的四个特性:

  • 原子性(Atomicity 又称不可分割性)
    • 一个事务(transaction)中的所有操作,或者全部完成,或者全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。即事务不可分割。
  • 一致性(Consistency
    • 在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设约束触发器级联回滚等。
  • 隔离性Isolation,又称独立性)
    • 数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括未提交读(Read uncommitted)、已提交读(read committed)、可重复读(repeatable read)和可串行化(Serializable)。
      • 可串行化(Serializable): 不会发生幻读
  • 持久性(Durability
    • 事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。这就意味着 DB 必须在数据写入磁盘成功后才能返回提交成功。常见策略就是事务提交前先确保 WAL(write ahead log)预写日志成功,再定期把磁盘的 btree 中的脏页数据写入磁盘 btree pag


本文访问量

本站总访问量

本站总访客数