一个事务就是一个完整的业务逻辑、一个最小的工作单元,可以提交或回滚,保证多次更改全部成功或失败
原子性
- 当事务对数据库进行多次更改时,要么在提交事务后所有更改成功,要么在回滚事务时撤销所有更改
- InnoDB 通过 undolog 来实现事务的原子性,每次 DML 语句执行前 InnoDB 会在 undolog 中写入与该语句逻辑相反的语句。当事务回滚时,InnoDB 会将 DML 语句和 undolog 中的语句一起执行,以抵消数据的修改
隔离性
- 指并发的事务在进行过程中在某种程度上不互相干扰,这里的程度与事务隔离级别有关
持久性
- 指事务提交成功后,该事务所做的更改是永久的,也即写入磁盘
- 很多数据库通过 WAL 的思想防止写入期间出现如电源故障或软件崩溃等情况导致的数据丢失
- WAL ( write ahead log ) :写入数据时先写日志。相较于写日志,磁盘的写入是相当耗费的时间的,所以出现意外的概率也较大,但只要日志写入成功了,InnoDB 就可以根据日志进行数据的恢复。InnoDB 实现的日志叫 redolog ,事务提交时 InnoDB 会先在 redolog 中写入事务做出的更改
一致性
- 事务提交或回滚后,数据库从一个有效的状态变为另一个有效的状态