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日志对应以下操作类型
- 用户定义表的INSERT操作
- 对用户定义表的UPDATE和DELETE操作
- 用户定义临时表的INSERT操作
- 对用户定义临时表的UPDATE和DELETE操作
INSERT语句的
undo log
的类型是TRX_UNDO_INSERT_REC
,这个undo log
里包含了以下一些东西:- 这条日志的开始位置
- 主键的各列长度和值
- 表id
- undo log日志编号
- undo log日志类型
- 这条日志的结束位置