redo
redo是数据库实例恢复的重要组成部分。其目的是保证数据库实例或服务器发生故障时,不会导致数据库崩溃,不会丢失已经提交的数据。并且通过RWA机制保证数据库被变更之前,其redo日志必须先写入日志缓冲区,而事务提交之前也必须首先保证将日志缓冲区和这个事务相关的redo信息写入到redo日志文件。
通过这一机制,可以保证数据库宕机后,重新启动实例,数据库中没有被及时写入数据文件中的buffer pool中的信息和一些不一致的未提交的事务信息会被正确恢复,而且数据库可以恢复到宕机前的一致性状态。
redo日志分为多个组,这样当一组日志写完后,可以切换到新的日志组,而不必等待原日志组的中相关的数据刷盘,再重写。
undo
undo日志除了用于事务回滚外,还实现了MVCC