1 redolog保证了事务的一致性,持久性。在mysql服务启动时,就会给redolog分配一块连续的存储空间,各个事务共享这块存储空间,各个事务的redolog日志根据语句的执行数据,通过顺序io的方式交替存入。如果mysql宕机了,redolog可以将mysql数据库恢复到宕机前的一个状态,未提交的事务,可以根据策略手动选择提交或者回退。
2 undolog保证了事务的原子性,它记录了数据操作前的状态,需要会退时可以执行回退。
举例子,加入数据表中俩字段,a=1,b=2
1start tansaction
2记录a=1到undolog
3update a=2
4记录a=2到redolog中
5记录b=2到undolog中
6update b=3
7记录b=3到redolog中
8将redolog写入磁盘
9commit
如果在1-8之间出现宕机,磁盘中的数据不会受到任何影响
如果在8-9之间出现宕机,可以根据redolog继续执行事务
如果在9之后出现宕机,并且此时内存映射中变更的数据没有立即写回到磁盘。那么也可以根据redolog日志继续将数据写回磁盘。