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
隔离型