undo log

notion image
undo log是与单个读写事务相关联的撤消日志记录的集合。undo log record包含关于如何撤消事务对聚集索引记录(行数据)的最新更改的信息。
如果另一个事务需要查看作为一致读操作一部分的原始数据,则从undo log 中检索未修改的数据。
undo log存在于undo log segments中,undo log segments包含在rollback segments中。rollback segments位于系统表空间、undo表空间和临时表空间中。
Undo日志默认存储在system表空间中,但也可以存储在一个或多个Undo表空间中
Undo表空间和这些表空间中的单个段不能被删除。但是,存储在undo表空间中的undo日志内容可以被清除。
 
一个事务最多被分配4个undo日志,每个undo日志对应以下操作类型
  1. 用户定义表的INSERT操作
  1. 对用户定义表的UPDATE和DELETE操作
  1. 用户定义临时表的INSERT操作
  1. 对用户定义临时表的UPDATE和DELETE操作
 
INSERT语句的undo log的类型是TRX_UNDO_INSERT_REC,这个undo log里包含了以下一些东西:
  • 这条日志的开始位置
  • 主键的各列长度和值
  • 表id
  • undo log日志编号
  • undo log日志类型
  • 这条日志的结束位置
notion image