总结自
bojiangzhou
undo log
称为撤销日志或回滚日志。在一个事务中进行增删改操作时,都会记录对应的 undo log。在对数据库进行修改前,会先记录对应的 undo log,然后在事务失败或回滚的时候,就可以用这些 undo log 来将数据回滚到修改之前的样子。
InnoDB 在内存维护了一个全局变量来表示事务ID,每当要分配一个事务ID时,就获取这个变量值,然后把这个变量自增1
。
在行记录格式中行记录格式,行记录中会有三个隐藏列:
-
DB_ROW_ID
:如果没有为表显式的定义主键,并且表中也没有定义唯一索引,那么InnoDB会自动为表添加一个row_id
的隐藏列作为主键。 -
DB_TRX_ID
:事务中对某条记录做增删改时,就会将这个事务的事务ID写入trx_id
中。 -
DB_ROLL_PTR
:回滚指针,本质上就是指向 undo log 的指针。
Undo Log Type
每对一条记录做一次改动