数据库技术之MVCC的实现原理 之 隐式字段

26 篇文章 0 订阅
19 篇文章 0 订阅

MVCC的目的就是:多版本并发控制,在数据库中的实现,就是为了解决读写冲突
它的实现原理主要是:依赖记录中的 3个隐式字段,undo日志 ,Read View 来实现的。
所以,我们先来看看这个三个point的概念。

1 隐式字段

每行记录除了我们自定义的字段外,还有数据库隐式定义的DB_TRX_ID,DB_ROLL_PTR,DB_ROW_ID等字段。

  1. DB_TRX_ID

6 byte,最近修改(修改/插入)事务ID:记录创建这条记录/最后一次修改该记录的事务ID

  1. DB_ROLL_PTR

7 byte,回滚指针,指向这条记录的上一个版本(存储于rollback segment里)

  1. DB_ROW_ID

6 byte,隐含的自增ID(隐藏主键),如果数据表没有主键,Inno DB会自动以DB_ROW_ID产生一个聚簇索引

实际还有一个删除flag隐藏字段, 既记录被更新或删除并不代表真的删除,而是删除flag变了

请添加图片描述

如上图,
DB_ROW_ID是数据库默认为该行记录生成的唯一隐式主键;
DB_TRX_ID是当前操作该记录的事务ID;
DB_ROLL_PTR是一个回滚指针,用于配合undo日志,指向上一个旧版本;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值