在数据库中,我们将我们的指定的一些操作设置为一个事务。
事务的四大特性ACID
- Atomocity:原子性,一个事务中的所有操作,要么全部完成,要么全部失败。
- Consistency:一致性,一个或多个事务执行后,原来一致的数据和数据库仍然是一致的。银行转账前后,金额的总额不改变。
- Lsolation:隔离性,数据库开启一个事务时,不会受到其他事务对数据操纵导致数据不一致。多个事务并发互不影响。
- Durability:持久性,事务提交后,对数据库中的数据的修改是永久的。它无法通过回滚或者任何方式来进行恢复。
而事务的ACID是通过
InnoDB日志
和锁
来保证。
- 事务的隔离性是通过
数据库锁+MVVC
的机制实现的。- 事务的持久性通过
redo log(重做日志)
来实现。- 原子性和一致性通过
Undo log(回撤日志)
来实现.
Undo Log保存了事务发生之前的数据的一个版本,为了满足事务的原子性,在事务前备份数据到Undo Log,然后进行数据的修改。如果出现了错误或者用户执行了roll back语句,系统可以利用Undo Log的数据进行恢复。
Redo log确保事务的持久性。防止在发生故障的时间点,尚有脏页未写入磁盘,在重启mysql服务的时候,根据redo log进行重做,从而达到事务的持久性这一特性。