Redo log和Undo log是数据库中用于确保数据一致性和持久性的两种重要日志类型。它们的主要区别和作用如下:
Redo log(重做日志):
Redo log是物理日志,记录的是物理数据页的修改信息。
它主要用于恢复提交后的物理数据页,以确保事务的持久性。
Redo log通常分为两部分:内存中的redo log Buffer是日志缓冲区,记录即时的redo信息;磁盘上的redo log file是日志文件,记录已经持久化到磁盘的数据。
在SQL操作数据库之前,会先记录redo log,以保证数据恢复的可能性和效率。
Undo log(回滚日志):
Undo log是逻辑日志,根据每行的记录进行记录。
它主要用于保存事务发生之前的数据版本,用于回滚操作,同时可以提供多版本并发控制下的读(MVCC),也即非锁定读。
Undo log可以视为一种恢复操作,它恢复的是行记录到某个特定版本。
总之,Redo log和Undo log在数据库系统中起着不同的作用。Redo log主要确保事务的持久性,而Undo log则主要用于回滚操作和并发控制下的读操作。