开发者社区> 知识浅谈> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

面试官:说一下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,快照读就会生成两个不同的快照。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
软件测试mysql面试题:什么是数据库测试?
软件测试mysql面试题:什么是数据库测试?
3 0
软件测试mysql面试题:为数据表建立索引的原则有哪些?
软件测试mysql面试题:为数据表建立索引的原则有哪些?
6 0
面试高频:MySQL是如何保证主从库数据一致性的?
大家好,我是Leo。前面文章我们介绍了WAL的安全机制。可以保证数据的安全性。通过安全性我们分析了binlog,redolog日志的写入机制。今天我们分析一下主从库的实现原理!MySQL是如何保证主从库的数据是一致的呢?
153 0
面试官:你给我说一下什么是时间轮吧? (中)
面试官:你给我说一下什么是时间轮吧? (中)
34 0
面试官:你给我说一下什么是时间轮吧? (下)
面试官:你给我说一下什么是时间轮吧? (下)
36 0
数据库必知词汇:PostgreSQL
PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是从加州大学伯克利分校写的POSTGRES软件包发展而来的。经过二十多年的发展,PostgreSQL是世界上是最先进的开源数据库之一。始于大学研究,所以整个PostgreSQL具有高度的理论支撑,同时具有严谨的代码设计风格,工业级的代码设计。POSTGRES是由图灵奖的获得者Michael Ralph Stonebraker最初主持设计开发的,具有许多先进的数据库理念。其中许多概念在很久以后才出现在一些商业数据库系统中。
261 0
PostgreSQL数据库压力测试工具pgbench简单应用
PG数据库提供了一款轻量级的压力测试工具叫pgbench,其实就是一个编译好后的扩展性的可执行文件。
1644 0
对“一道刁钻面试题”的VC解答
    该题目的出处是:“一道比较刁的面试题”,http://www.cnblogs.com/tandly/archive/2010/01/08/1642609.html       要求:     1.任何语言 任何形式(web,winform,flash,flex,silverlight)等等。
741 0
+关注
知识浅谈
🍁 作者:知识浅谈,CSDN签约讲师,阿里云社区专家博主,华为云云享专家,热爱分享创作 💒 公众号:知识浅谈 📌 擅长领域:全栈工程师、爬虫、ACM算法 🔥 联系方式vx:zsqtcc
89
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载