ACID特性的实现原理

114 阅读1分钟

ACID特性

ACID是衡量事务的四个特性:

  • 原子性
  • 一致性
  • 隔离性
  • 持久性 按照严格的标准,只有同时满足ACID特性才是事务

原子性

定义
  • 原子性指一个事务是一个不可分割的工作单位,其中的操作要么都做,要么都不做;如果事务中一个sql语句执行失败,则已执行的语句也必须回滚,数据库退回到事务前的状态。
实现原理:undo log
  • InnoDB存储引擎还提供了两种事务日志:redo log(重做日志)和undo log(回滚日志),undo log原子性和隔离性实现的基础
  • 实现原子性的关键,是当事务回滚时能够撤销所有已经成功执行的sql语句。InnoDB实现回滚,靠的是undo log,当事务对数据库进行修改时,InnoDB会生成对应的undo log;如果事务执行失败或调用了rollback,导致事务需要回滚,便可以利用undo log中的信息将数据回滚到修改之前的样子
  • undo log属于逻辑日志,它记录的是sql执行相关的信息。当发生回滚时,InnoDB会根据undo log的内容做与之前相反的工作:对于每个insert,回滚时会执行delete;对于每个delete,回滚时会执行insert;对于每个update,回滚时会执行一个相反的update,把数据改回去。

持久性

定义
  • 持久性指事务一旦提交,它对数据库的改变就应该是永久性的。其他操作或者宕机不影响
实现原理 redo log

隔离型

定义
实现原理 :锁、MVCC