在对一条记录进行 delete mark 操作前,需要把该记录的旧的 trx_id 和 roll_pointer 隐藏列的值都给记到对应的 undo 日志中来,就是我们图中显示的old trx_id 和 old roll_pointer 属性。这样有一个好处,那就是可以通过 undo 日志的 old roll_pointer 找到记录在修改之前对应的 undo 日志。比方说在一个事务中, 我们先插入了一条记录,然后又执行对该记录的删除操作,这个过程的示意图就是这样:
    image.png

    从图中可以看出来,执行完delete mark 操作后,它对应的undo 日志和INSERT操作对应的 undo 日志就串成了一个链表。这个链表就称之为版本链。