什么是undo_log回滚日志

  1. 在一个事务里要执行一个增删改查,需要把数据记载到buffer pool的缓存页里,然后在缓存页里执行一通增删改,这些记录记在redo_log中,如果事务执行到一半,此时需要回滚,就需要undo_log日志,如果在缓存页中执行insert操作,undo_log日志记录了这个操作记录的主键和一个对应的delete操作,可以把insert操作给回滚掉。

    回滚日志长什么样

    举例insert的回滚日志长什么样

  2. insert语句的undo_log的类型是TRX_UNDO_INSERT_REC,undo_log包含:

① 这条日志的开始位置:日志开始位置
② 主键的各列长度和值 :插入这条数据的主键的每个列的长度和值,可能会有联合主键
③ 表id :插入的表的id
④undo_log日志编号:每个undo_log的日志编号。一个事务多个SQL,会有多个undo_log,编号从0依次递增。
⑤ undo_log日志类型:TRX_UNDO_INSERT_REC
⑥ 这条日志的结束位置:这条undo_log的回滚日志