redo log 重做日志
重做日志,记录的是事务提交时数据页的物理修改,是用来实现事务的持久性。
该日志文件由两部分组成:
- 重做日志缓冲(redo log buffer)
- 重做日志文件((redo log file)
前者是在内存中,后者在磁盘中。当事务提交之后会把所有修改信息都存到该日志文件中,用于在刷新脏页到磁盘,发生错误时,进行数据恢复使用。
数据库对数据的操作和更新分为:
- 数据库的日志顺序读写
- 数据文件随机读写
(33条消息) 数据库的日志顺序读写以及数据文件随机读写_Twpeak_继续攀登的博客-CSDN博客
步骤:
1.在数据库进行数据更新操作时, 会先在内存结构中的 重做日志缓冲中 缓存 数据的内容。之后会追加到磁盘中的重做日志文件中。
2.之后等待一段时间后,再进行对磁盘的持久化操作。若此时出现异常的错误(如断电,服务异常中断之类的)事后就会启用重做日志文件,对数据进行回复操作。
3.若没有出现异常情况,重做日志文件 就没有用了,等待一段周期,要定时清理。
undolog 回滚日志
用于记录数据被修改前的信息,作用包含两个:提供回滚和MVCC(多版本并发控制)
undo log和redo log记录物理日志不一样,它是逻辑日志(记录的是操作而不是内容)。
可以认为当delete一条记录时,undo log中会记录一条对应的insert记录,反之亦然,当update一条记录时,它记录一条对应相反的update记录。当执行rollback时,就可以从undo log中的逻辑记录读取到相应的内容并进行回滚。
undolog操作:
Undo log销毁:undo log在事务执行时产生,事务提交时,并不会立即删除undo log,因为这些日志可能还用于MVCC。
Undo log存储: undo log采用段的方式进行管理和记录,存放在前面介绍的 rollback segment 回滚段中,内部包含1024个undo logsegment。