谈谈你对MVCC的理解

简介: MVCC也是一道非常高频的面试题,今天我花两分钟时间给大家梳理一下。另外,我花了1个多星期把往期的面试题解析配套文档准备好了,想获取的小伙伴可以在我的煮叶简介中找到。

莫兰迪色  世界上最温柔的颜色

MVCC也是一道非常高频的面试题,今天我花两分钟时间给大家梳理一下。另外,我花了1个多星期把往期的面试题解析配套文档准备好了,想获取的小伙伴可以在我的煮叶简介中找到。

1、什么是MVCC

ENTER TITLE


27f9d8fa0f6d40a792c96da6a78d592b.png

浪漫和悲观并不冲突,我时常消极但又依旧觉得生活很美好,哪怕只是一束光照进了房间,也要认真对待它的到来。

MVCC是为了解决事务操作中多线程并发安全问题的无锁并发控制技术,它的全称是Multi-Version Concurrency Control,中文翻译过来就叫多版本并发控制,简称MVCC。

2、为什么需要MVCC

对于MVCC的理解,可以根据数据库的三种并发场景来分析。

ENTER TITLE



dd2402cca9aa460fb539d31b774aec41.png

浪漫和悲观并不冲突,我时常消极但又依旧觉得生活很美好,哪怕只是一束光照进了房间,也要认真对待它的到来。

第一种是读和读的并发,就是两个线程A和B,同时进行读操作,这种情况下不会产生并发问题,也不需要并发控制。

第二种就是读写并发,就是两个线程A和B在同一时刻分别进行读写操作,这种情况下,可能会造成事务隔离性问题,还可能遇到脏读、幻读和不可重复读的问题。

第三种是写和写的并发,也就是两个线程A和B同时进行写操作,这种情况下可能出现数据更新丢失的问题

MVCC相当于是为每个修改保存⼀个版本,版本与事务时间戳关联,读操作只读该事务开始前的数据库的快照。它是通过数据库记录中的隐式字段Undo日志、Read View来实现的。

3、MVCC能解决什么问题

根据以上的分析,我总结一下MVCC可以为数据库解决以下三个方面的问题

ENTER TITLE


a241fea469be448ab96ba5d498394213.png

浪漫和悲观并不冲突,我时常消极但又依旧觉得生活很美好,哪怕只是一束光照进了房间,也要认真对待它的到来。

1、在并发读写数据库时,可以做到在读操作时不用阻塞写操作,写操作也不用阻塞读操作,从而提高数据库的并发读写的处理能力。

2、能实现读一致性,从而解决脏读、幻读、不可重复读等事务隔离问题,但是不能解决数据更新丢失的问题。

3、采用乐观锁或者悲观锁用来解决写和写的冲突,从而最大程度地去提高数据库的并发性能。

以上就是我对MVCC的理解,如果想了解MVCC实现原理的小伙伴可以在评论区回复666,如果超过100个我就爆肝连更。

我是被编程耽误的文艺Tom,如果我的分享对你有帮助。关注我,面试不再难!

相关文章
|
API Windows
NSIS使用教程(安装包制作安装文件教程,如何封装打包文件) 中文版
原文:NSIS使用教程(安装包制作安装文件教程,如何封装打包文件) 中文版 nsis中文版(Nullsoft Scriptable Install System)是一个专业的开源的可以用来封闭Windows程序的实用工具,是一个开源的 Windows 系统下安装程序制作程序。
5179 0
|
1月前
|
SQL 人工智能 数据库
机器友好,人类透明:面向 AI Agent 的企业级知识包装规范 OKF 深度指南
本文深度解析Google新发布的Open Knowledge Format(OKF)规范——一种专为AI Agent设计的轻量级知识包装标准。它以Markdown+YAML为核心,倡导原子化、去中心化的知识组织,通过index.md实现渐进式上下文加载,显著缓解RAG的噪声与Token爆炸问题,并与Karpathy的LLM Wiki形成“理念共鸣、路径互补”的双雄格局。
440 0
机器友好,人类透明:面向 AI Agent 的企业级知识包装规范 OKF 深度指南
|
3月前
|
智能设计 人工智能 数据可视化
入选顶会ACM!阿里云DashChat重塑数据看板设计:从辅助工具进阶为智能设计伙伴
近日,阿里云DataV团队的论文《DashChat: Interactive Authoring of Performance Dashboard Design Prototypes through Conversation with LLM-Powered Agents》在经历多轮评审后,正式被计算机人机交互领域的全球顶级学术会议——ACM CHI 2026录用,将在会议全新改革的Poster赛道上进行宣读和展示。
316 2
入选顶会ACM!阿里云DashChat重塑数据看板设计:从辅助工具进阶为智能设计伙伴
|
1月前
|
人工智能 运维 BI
如何通过API获取全国招标公告和中标公告数据
对很多软件公司、企业信息化团队和数据应用开发者来说,招投标数据一直是一个高价值但比较难处理的数据源。招标公告、中标公告、政府采购公告、工程项目公示分布在不同网站和平台上,页面结构不统一,发布时间不一致,字段也不标准。如果只靠人工检索和复制,很难支撑系统化应用;如果自行采集和清洗,又会持续消耗技术和运维成本。
434 0
|
9月前
|
缓存 前端开发 Java
深入理解 Java 类加载器:双亲委派机制的前世今生与源码解析
本文深入解析Java类加载器与双亲委派机制,从Bootstrap到自定义加载器,剖析loadClass源码,揭示类加载的线程安全、缓存机制与委派逻辑,并探讨SPI、Tomcat、OSGi等场景下打破双亲委派的原理与实践价值。(238字)
1011 8
深入理解 Java 类加载器:双亲委派机制的前世今生与源码解析
|
2月前
|
数据采集 前端开发 JavaScript
Scrapling:极简高效的 Python 智能爬虫框架
Scrapling:极简高效的 Python 智能爬虫框架
|
3月前
|
机器学习/深度学习 人工智能 前端开发
2026 年 AI 对话转 Word 工具分析:Pandoc、Typora、DeepShare 怎么选?
本文对比Pandoc、Typora与DeepShare三大AI对话转Word工具:Pandoc适合技术用户批量转换,需前置整理;Typora侧重Markdown编辑后导出,适合人工润色;DeepShare专为AI网页优化,一键导出公式、表格、Canvas等复杂内容,省去复制粘贴与格式修复,是学生、教师及职场人士高效交付的首选方案。
2026 年 AI 对话转 Word 工具分析:Pandoc、Typora、DeepShare 怎么选?
|
4月前
|
存储 缓存 Java
击穿 Java 高并发性能瓶颈:伪共享底层原理、缓存行填充与 @Contended 注解全维度深度拆解
本文深入剖析CPU缓存体系、MESI协议与缓存行原理,系统揭示伪共享(False Sharing)的本质、产生机制及对Java高并发性能的严重危害,并详解手动填充与JVM原生`@Contended`注解两种解决方案,涵盖检测定位、最佳实践与跨架构适配。
369 1
|
6月前
|
存储 运维 安全
阿里云无影云电脑免费试用与新购活动参考:免费试用1个月,新购59元3个月起
阿里云无影云电脑免费试用及新购特惠活动,符合条件的新客户可享1次免费试用,含1个月个人版及数据盘、系统盘和网络带宽。无影云电脑打破传统PC界限,实现云上办公,降低IT成本,提高资源利用率,保障数据安全。无影云电脑产品配置多样,计费灵活,优势包括极致安全、高效运维、灵活接入和丰富应用场景,广泛适用于多个行业领域,为企业提供高效、安全、灵活的云上办公解决方案。
|
8月前
|
算法 数据可视化 API
AR眼镜仓储物流分拣技术应用与落地方案
本方案聚焦仓储分拣痛点,推出轻量化AR眼镜及智能系统,集成高清摄像头、UWB厘米级定位与自研算法,实现“所见即识别”与最优路径导航。通过开放API无缝对接WMS,提升拣货效率30%以上,错误率低于0.5%,整机重量≤50克,支持全天候作业,助力仓储物流智能化升级。(238字)

热门文章

最新文章