面试官:说一下MVCC吧

简介: 面试官:说一下MVCC吧
🍁 作者:知识浅谈,CSDN签约讲师,CSDN博客专家,华为云云享专家,阿里云星级博主
📌 擅长领域:全栈工程师、爬虫、ACM算法
💒 公众号:知识浅谈
🔥 联系方式vx:zsqtcc
🤞面试官偷偷告诉我:如何优化提升接口的性能🤞
正菜来了⛳⛳⛳

心里一万个我说你个der,面个试,非得让我造火箭,迫于无奈还是说吧。

MVCC:多版本控制协议

因为我们基于事务对数据库操作的时候不同的事务操作,会影响数据的变化,所以有一个undolog文件用于记录每个事务修改的数据信息记录,每个记录后边会加上对应的修改这个信息的事务id即trxid和指向上一个数据版本的point。

多版本控制协议是针对事务的隔离级别RC(读已提交)和RR(可重复读)来进行操作的。

对于快照读来说,每哥事务读取数据的时候会生成一个快照,快照中含有当前事务id和活动事务列表(就是没有提交的事务),以及最小活动事务id和最大活动事务id+1。

当一个事务select进行查询的时候,会生成一个快照,然后根据快照中的信息对ubdolog版本链中数据进行遍历,知道找到满足快照中条件的数据。

条件:版本链中当前行的事务id==快照中事务id或者小于快照中最小活动的id返回当前版本链中当前行的数据,若是当前行中的事务id大于等于快照中最大的活动事务id直接遍历下一行数据,当前行记录的事务id如果大于最小活动事务id小于最大活动事务id,就去活动id的数组中查询是不是在数组中,如果不在的话就直接返回当前行的数据,如果在的话遍历下一行以此类推。

RC隔离级别下:一个事务每一次快照读都会产生一个新的快照,所以不可重复读。

RR隔离级别下:一个事务的多次快照都都是使用的第一次度的时候的快照,所以可以借解决重复读,因为连续多次快照读都会重用一个快照,所以其他的事务并不会影响到RR的事务,所以就解决了幻读的问题。

值得主义的一个问题是如果两个快照都之间插入了一个当前读,就是这种 select for update,快照读就会生成两个不同的快照。

相关文章
|
26天前
|
存储 关系型数据库 数据库
聊多版本并发控制(MVCC)
MVCC是数据库并发控制技术,用于减少读写冲突。它维护数据的多个版本,使事务能读旧数据而写新数据,无需锁定记录。当前读获取最新版本,加锁防止修改;快照读不加锁,根据读取时的读视图(readview)决定读哪个版本。InnoDB通过隐藏字段(DB_TRX_ID, DB_ROLL_PTR)和undo log存储版本,readview记录活跃事务ID。读已提交每次读取都创建新视图,可重复读则在整个事务中复用一个视图,确保一致性。MVCC通过undo log版本链和readview规则决定事务可见性,实现了非阻塞并发读。
169 5
聊多版本并发控制(MVCC)
|
8月前
|
数据库
谈谈你对MVCC的理解
MVCC也是一道非常高频的面试题,今天我花两分钟时间给大家梳理一下。另外,我花了1个多星期把往期的面试题解析配套文档准备好了,想获取的小伙伴可以在我的煮叶简介中找到。
65 0
|
3月前
|
算法 Java
【面试问题】锁如何优化?
【1月更文挑战第27天】【面试问题】锁如何优化?
|
3月前
|
存储 关系型数据库 MySQL
什么是MVCC?看看它的实现原理
之前在讲 MySQL 事务隔离性提到过,对于写操作给读操作的影响这种情形下发生的脏读、不可重复读、虚读问题,是通过MVCC 机制来进行解决的,那么MVCC到底是如何实现的,其内部原理是怎样的呢?我们要抓住三个方面:记录中的4个隐藏字段、undo log 和 read view。
95 0
什么是MVCC?看看它的实现原理
|
4月前
|
消息中间件 Java 关系型数据库
面试官:说说MVCC的执行原理?
面试官:说说MVCC的执行原理?
76 1
面试官:说说MVCC的执行原理?
|
11月前
|
关系型数据库 MySQL 数据库
每日一博 - 浅析事务隔离级别& MVCC机制
每日一博 - 浅析事务隔离级别& MVCC机制
70 0
|
SQL 存储 关系型数据库
面试突击:MVCC 和间隙锁有什么区别?
MVCC 和间隙锁是两种完全不同的机制,但它们的目的都是相同的,都是用来保证数据库并发访问的,我们先来看二者的定义。
136 0
|
关系型数据库 MySQL 数据库
简单聊聊MVCC
本文章仅仅是从一个点来讲MVCC,比较粗浅,并不能代表这就是全部的MVCC。网上还有许多其他详细的MVCC介绍文章,可以结合起来阅读。
简单聊聊MVCC
|
存储 关系型数据库 数据库
MVCC实现原理之ReadView(一步到位)(上)
MVCC实现原理之ReadView(一步到位)
MVCC实现原理之ReadView(一步到位)(上)
|
SQL 关系型数据库 MySQL
MVCC实现原理之ReadView(一步到位)(下)
MVCC实现原理之ReadView(一步到位)
MVCC实现原理之ReadView(一步到位)(下)