Mysql中的redo log和undo log

redo log 日志 ->持久性

重做日志,记录的是事务提交时数据页的物理修改,是用来实现事务的持久性。 主要有重做日志缓冲(redo log buffer)以及重做日志文件(redo log file)组成,前者在内存,后者在磁盘。

事务提交后会把所有修改信息都存到该日志文件中,用于在刷新脏页到磁盘,发生错误时,进行数据恢复使用。

在事务中将增删改的数据记录到redo log buffer,事务提交时会将redo log buffer 刷新到磁盘文件中。若脏页刷新失败,则可以使用redo log 恢复重做。

redo log file采用追加的方式将随机的数据操做记录,故可以将随机IO变更为顺序IO操作,也就是WAL(write-Ahead-Logging,先写日志)机制,所以能提高性能。

undo log 日志 ->原子性

回滚日志,用于记录数据段被修改前的信息。

作用:提供回滚MVCC(多版本并发控制)

undo log 是逻辑日志,它记录的是相反的,比如当delete一条记录时,undo log会记录一条insert 记录。

undo log 采用段方式进行管理和记录,存放在rollback segment回滚段中(1024个)。

你可能感兴趣的:(数据库,mysql)