bufferreader readline一次读一行_Mysql是如何实现可重复读的

简单地说,Mysql的InnoDB存储引擎的可重复读隔离级别解决了不可重复读问题,同时在一定程度上解决了幻读,这一切都归功于多版本并发控制机制,即我们平时说的MVCC(Mutil-Version Concurrency Control),而MVCC的实现又依托于Undo log chainReadView.

1、Undo log Chain

当InnoDB为我们存储一行数据的时候会额外再添加3个字段:

  • 6个字节的DB_TRX_ID

  • 7个字节的DB_ROLL_PTR

  • 6个字节的DB_ROW_ID

这里不关心最后一个DB_ROW_ID,假设我们有张只有一个字段c1的空表,现在往该表插入一条数据10,插入成功之后,该行数据如下:

c8418f4412210a6c18bfd97beda212d2.png

10表示的是c1的值,3表示的是DB_TRX_ID的值,即当时插入该条数据的事务ID,null表示的是DB_ROLL_PTR的值,即指向Undo log的指针&#x

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值