undo日志
undo日志 作用 因一些原因(机器宕机/操作系统错误/用户主动rollback等)导致事务执行到一半,但这时事务的执行已经让很多信息修改了(提交前就会边执行边修改记录),但还有部分未执行,为了保证事务的一致性与原子性,要么全都执行成功,要么全都失败,所以就需要回滚,而rollback需要旧值依据,而这些旧值记录就存储在undo日志中。 redo日志记录 记录时机 InnoDB存储引擎在实际的进行增删改操作时,每操作一条记录都会先把对应的undo日志记录下来。 undo日志通用结构 undo日志存储在类型为FIL_PAGE_UNDO_LOGO的页面中,而每条记录添加到数据页中时,都会隐式的生成两个列trix_id和roll_pointer,trix_id就是事务id,roll_pointer是指向记录对应的undo日志的一个指针 end of record:本条undo日志在页中结束地址 undo type:undo日志类型 undo no:undo日志编号,事务没提交时,每生成一条undo日志就递增1 table id:本条undo 日志对应记录所在table id(information_schema库中表innodb_sys_tables查看) 主键各列信息列表:<len, value>关键列占用空间和真实值信息列表 start of record:本条undo