undo log日志长什么样

      对于一个事务,如果有2条个增删改操作,如果目前已经执行了1个操作,修改了一些数据,还有1条逻辑没有执行,此时事务要回滚怎么办?Mysql中有一个回滚日志 undo log日志。

      如果你在执行了一个insert语句,那么此时在Undo log日志中,对这个操作记录的回滚日志就必须有一个主键和一个对应的delete操作。

      那么比如说你要执行的是delete操作,那么起码你要把你删除的那条数据数据记录下来,如果要回滚,就应该执行一个insert操作把那条数据插入回去。

      如果你要是执行的是update语句,那么起码你要把你更新之前的那个值记录下来,回滚的时候重新update一下,把你之前更新前的旧值给他更新回去。

那么insert语句的undo log日志到底长什么样子呢?

insert语句的undo log的类型是TRX_UNDO_INSERT_REC,这个undo log里面包含了以下一些东西:

  • 这条日志的开始位置
  • 主键的各列长度和值
  • 表id
  • undo log日志编号,每个事务里的undo log日志的编号都是从0开始的,然后一次递增
  • undo log日志类型
    在这里插入图片描述
    有了这些数据undo log里就知道在哪个表里插入的数据,主键是什么,直接定位到那个表和主键对应的数据页,从里面删除之前insert语句插入进去的数据,这样就实现了事务回滚效果!
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值