InnoDB数据多版本机制

InnoDB引擎内部在保存数据到数据库时,每一行都有3个自动生成的内部列:

DB_TRX_IDG:占用6B,用来标记事务的标示符,记录下最后一个事务的操作类型(更新或修改),删除操作会被当成update处理,只是在其中设置特殊的位置指出实际操作为delete

DB_ROLL_PRT:占用TB,被称为回滚标记,用于指定UNDO日志记录写到回滚段中的位置。如果记录被更新,那么UNDO日志会包含用于构造记录更新前状态的所有必要信息

DB_ROW_ID:占用6B,就是该记录行的行ID

回滚段中的UNDO日志分为insert UNDO日志和update UNDO日志两种:

inset UNDO日志仅在事务回滚时需要,事务提交后即可被废除

update UNDO日志则用于构造一致性读

 

只有当InnoDB废弃了update UNDO日志后,才会从物理上移除关联的列和索引记录,这种移除操作被称为purge,执行速度很快

 

 

 

 

你可能感兴趣的:(InnoDB)