1.undo log日志回滚原理

undo log记录的日志很简单。比如:

  1. 当在缓存页执行一个insert语句,那么此时在undo log日志里,对这个操作日志就有一个主键和对应的delete操作,保证能把这次insert操作回退;
  2. 如果执行的delete语句,那么就会把删除的这条数据记录下来,如果回滚,就会执行对应的insert操作;
  3. 如果执行的update语句,那么就会把更新之前的那个值记录下来,回滚的时候再update一下,把之前更新的旧值更行回去。

    2.undo log日志结构

    Insert语句的undo log的类型是TRX_UNDO_INSERT_REC,里面主要包含:
  • 这条日志的开始位置;
  • 主键的各列长度和值;
  • 表id;
  • undo log日志编号;
  • undo log日志类型;
  • 这条日志的结束位置。

08_undo log - 图1