当前位置: 首页 > article >正文

什么是mvcc,面试的时候怎么说

文章目录第一部分底层实现的三大支柱1. 隐藏字段数据在哪2. Undo Log 版本链历史怎么找3. Read View看哪一条第二部分可见性判断逻辑核心算法第三部分面试进阶——RC 与 RR 的区别面试话术示例满分回答 小贴士在面试中聊MVCCMulti-Version Concurrency Control多版本并发控制你不能只背定义。面试官想看的是你能不能把“它是怎么工作的”和“为什么它能提高并发”这两件事讲透。简单一句话概括MVCC 是一种通过维护数据的多个快照版本让“读-写”操作不再互相阻塞从而提升数据库并发性能的机制。第一部分底层实现的三大支柱在面试时建议按照“数据存哪→历史怎么找→看哪一条”的逻辑来回答。1. 隐藏字段数据在哪InnoDB 在表的每一行数据后面都偷偷加了两个关键的隐藏列DB_TRX_ID记录最后一次修改该行的事务 ID。DB_ROLL_PTR回滚指针指向该行数据存在undo log里的上一个版本。2. Undo Log 版本链历史怎么找每当你更新一条记录旧的数据并不会被物理删除而是被塞进undo log里。隐藏字段里的回滚指针会将这些旧版本串联起来形成一条版本链。3. Read View看哪一条这是 MVCC 的“指挥官”。当你执行SELECT时InnoDB 会生成一个Read View读视图它像一张当前活跃事务的“系统快照”包含m_ids当前系统里还没提交的事务 ID 列表。min_trx_idm_ids里最小的 ID。max_trx_id系统即将分配给下一个事务的 ID。第二部分可见性判断逻辑核心算法这是面试的高潮部分。你需要描述事务是如何顺着“版本链”寻找自己能看的数据的拿起版本链中最新记录的trx_id。如果trx_id min_trx_id说明这个版本在你开启查询前就提交了可见。如果trx_id max_trx_id说明这个版本是在你开启查询后才生成的不可见。如果在两者之间检查trx_id是否在m_ids列表里。如果在说明事务还没提交不可见。如果不在说明事务已经提交可见。不可见怎么办顺着回滚指针去找上一个版本重复上述判断。第三部分面试进阶——RC 与 RR 的区别这是面试官最喜欢的“陷阱题”。MVCC 是如何实现不同隔离级别的RC读已提交事务中每一次SELECT都会重新生成一个 Read View。所以如果你在两次查询之间有别人提交了你能看到最新的。RR可重复读事务中只有第一次SELECT会生成Read View之后整个事务都复用这一个。所以不管别人怎么改你看到的永远是初恋的样子。面试话术示例满分回答面试官讲讲你对 MVCC 的理解。你MVCC 是 InnoDB 实现“读-写”并发的核心。它的底色是“空间换时间”让读操作不加锁也就是我们常说的“快照读”。实现上它主要靠三样东西隐藏列存事务 ID 和回滚指针。Undo Log形成数据的历史版本链。Read View这是一套可见性算法。核心逻辑就是当一个事务去读数据时它会生成一个 Read View。然后顺着 Undo Log 的版本链用自己的 Read View 规则去比对每个版本的事务 ID。如果是RC 级别它每次查都生成新视图所以会发生不可重复读如果是RR 级别它整个事务只在第一次查询时生成视图从而保证了可重复读并且在很大程度上避免了幻读。 小贴士如果面试官问“MVCC 能完全解决幻读吗”你要严谨一点不能完全解决。它能解决“快照读”下的幻读但如果发生了“当前读”比如执行了SELECT ... FOR UPDATE还是需要靠Next-Key Lock记录锁间隙锁来封印。

相关文章:

什么是mvcc,面试的时候怎么说

文章目录第一部分:底层实现的三大支柱1. 隐藏字段(数据在哪)2. Undo Log 版本链(历史怎么找)3. Read View(看哪一条)第二部分:可见性判断逻辑(核心算法)第三部…...

FanControl终极指南:3步打造静音高效电脑散热系统

FanControl终极指南:3步打造静音高效电脑散热系统 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/Fan…...

如何解密网易云音乐NCM加密文件:ncmdump工具使用指南

如何解密网易云音乐NCM加密文件:ncmdump工具使用指南 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 网易云音乐作为国内主流音乐平台,其下载的音频文件采用NCM加密格式,限制了用户在第三方设备上…...

AI科学家智能体:从工具到自主探索的范式转变

1. 项目概述:当AI化身“科学家”最近在开源社区里,一个名为“AI-Scientist-v2”的项目引起了我的注意。这个由SakanaAI团队发布的项目,名字本身就充满了想象力——它不是一个简单的代码生成器或聊天机器人,而是一个旨在模拟“科学…...

如何利用FMA音乐分析数据集解决音乐信息检索难题:提升模型准确率的完整方案

如何利用FMA音乐分析数据集解决音乐信息检索难题:提升模型准确率的完整方案 【免费下载链接】fma FMA: A Dataset For Music Analysis 项目地址: https://gitcode.com/gh_mirrors/fm/fma 音乐信息检索(MIR)研究长期面临高质量标注数据…...

万象熔炉 | Anything XL效果对比:原生SDXL vs Anything XL二次元专项优化

万象熔炉 | Anything XL效果对比:原生SDXL vs Anything XL二次元专项优化 1. 项目简介 万象熔炉 | Anything XL 是一款基于 Stable Diffusion XL(SDXL)框架开发的本地图像生成工具,专门针对二次元和通用风格图像生成进行了深度优…...

AI教材写作秘籍:利用AI工具实现低查重,10分钟完成教材初稿

教材修改与AI工具的重要性 教材的初步写作完成之后,进入修改和优化的阶段简直是一场“折磨”!仔细通读全文,找出逻辑上的漏洞和知识点的错误,需要耗费大量的时间和精力;而调整一个章节的结构,往往会影响到…...

Creality Print终极指南:从零开始掌握专业级3D切片软件

Creality Print终极指南:从零开始掌握专业级3D切片软件 【免费下载链接】CrealityPrint 项目地址: https://gitcode.com/gh_mirrors/cr/CrealityPrint 想要轻松将创意变为现实?Creality Print作为一款功能强大的3D打印切片软件,正是你…...

WaveDrom技术深度解析:JavaScript驱动的数字时序图渲染引擎架构与实践

WaveDrom技术深度解析:JavaScript驱动的数字时序图渲染引擎架构与实践 【免费下载链接】wavedrom :ocean: Digital timing diagram rendering engine 项目地址: https://gitcode.com/gh_mirrors/wa/wavedrom 项目核心价值定位:代码即设计的数字时…...

如何用3步实现Godot-MCP的革命性突破:AI游戏开发终极实战指南

如何用3步实现Godot-MCP的革命性突破:AI游戏开发终极实战指南 【免费下载链接】Godot-MCP An MCP for Godot that lets you create and edit games in the Godot game engine with tools like Claude 项目地址: https://gitcode.com/gh_mirrors/god/Godot-MCP …...

如何快速掌握Dell G15散热控制:轻量级开源方案完全指南

如何快速掌握Dell G15散热控制:轻量级开源方案完全指南 【免费下载链接】tcc-g15 Thermal Control Center for Dell G15 - open source alternative to AWCC 项目地址: https://gitcode.com/gh_mirrors/tc/tcc-g15 还在为Dell G15笔记本的官方散热软件卡顿、…...

ANP协议:构建异构AI智能体网络的通信标准与实践指南

1. 项目概述:从单体智能到群体协作的范式跃迁最近几年,AI Agent(智能体)的概念火得一塌糊涂,从能帮你写代码、查资料的Copilot,到能自主规划、执行复杂任务的AutoGPT,大家似乎都看到了一个由无数…...

5个超实用技巧:轻松掌握哔哩下载姬批量下载秘诀

5个超实用技巧:轻松掌握哔哩下载姬批量下载秘诀 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等)…...

数据科学思维导图:从工具链到实战心法

1. 数据科学的达芬奇密码:掌握数据科学思维导图数据科学就像一场精心编排的交响乐,需要统计学家的严谨、工程师的务实和艺术家的创造力。作为一名从业十余年的数据科学家,我发现真正优秀的数据分析项目往往遵循着相似的底层逻辑 - 就像达芬奇…...

E-Hentai漫画下载器终极指南:如何免费批量下载完整漫画合集

E-Hentai漫画下载器终极指南:如何免费批量下载完整漫画合集 【免费下载链接】E-Hentai-Downloader Download E-Hentai archive as zip file 项目地址: https://gitcode.com/gh_mirrors/eh/E-Hentai-Downloader 如果你是一位E-Hentai漫画爱好者,想…...

【限时公开】某Top3云厂商内部AI沙箱红蓝对抗考题库(含Docker BuildKit逃逸模拟题)

更多请点击: https://intelliparadigm.com 第一章:Docker Sandbox 运行 AI 代码隔离技术面试题总览 在 AI 工程化落地过程中,安全执行第三方或用户提交的模型推理/训练代码成为关键挑战。Docker Sandbox 通过轻量级容器化实现进程、网络、文…...

基于深度学习unet遥感图像分割水体 深度学习的建筑物等分割检测

UNet 语义分割 概述 本项目旨在开发一个模型,用于对同一地理区域的两幅遥感影像进行变化分割。模型的输入是两张分辨率相同的图像,输出是一张多类别掩膜,用于标识不同类型的变化。这些变化被分为以下几类:建筑物、道路、植被、水…...

掌握LCU API:重构你的英雄联盟游戏体验

掌握LCU API:重构你的英雄联盟游戏体验 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 你是否曾在英雄联盟对局中因为手动操作繁琐…...

如何快速解锁加密音乐:3步搞定所有平台限制的实用指南

如何快速解锁加密音乐:3步搞定所有平台限制的实用指南 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: https…...

为什么92%的MCP插件项目在生产环境崩溃?——基于GitHub 417个开源仓库的代码审计与性能基线对比报告

更多请点击: https://intelliparadigm.com 第一章:为什么92%的MCP插件项目在生产环境崩溃?——基于GitHub 417个开源仓库的代码审计与性能基线对比报告 核心失效模式:未声明的依赖生命周期冲突 审计发现,83.6% 的崩溃…...

Unity导航系统进阶:用OffMeshLink组件实现AI跳崖、钻洞与传送门(2019.4.10f1实测)

Unity导航系统高阶技巧:OffMeshLink实现AI非标准路径设计实战 在《塞尔达传说:旷野之息》中,玩家经常能看到敌人从悬崖跃下追击林克,或是通过矮洞穿梭于不同区域。这种非标准路径移动不仅提升了游戏的真实感,更丰富了关…...

苹果USB网络共享驱动终极安装指南:3分钟解决Windows连接问题

苹果USB网络共享驱动终极安装指南:3分钟解决Windows连接问题 【免费下载链接】Apple-Mobile-Drivers-Installer Powershell script to easily install Apple USB and Mobile Device Ethernet (USB Tethering) drivers on Windows! 项目地址: https://gitcode.com/…...

如何在Windows上轻松安装安卓应用:APK Installer终极指南

如何在Windows上轻松安装安卓应用:APK Installer终极指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾经需要在Windows电脑上运行安卓应用&…...

掌握AI大模型,抢占未来先机:从零开始构建你的智能应用!

本文介绍了人工智能的发展历程、应用范围及挑战,重点强调了新一代AI大模型的应用潜力与开发门槛的降低。作者通过亲身体验ChatGPT等AI工具,呼吁大家拥抱AI浪潮,学习新一代AI应用编程。文章提出,AI技术的发展是为了服务人类&#x…...

如何解决Amlogic S9xxx设备Armbian系统启动失败:内核版本兼容性深度解析与策略矩阵

如何解决Amlogic S9xxx设备Armbian系统启动失败:内核版本兼容性深度解析与策略矩阵 【免费下载链接】amlogic-s9xxx-armbian Supports running Armbian on Amlogic, Allwinner, and Rockchip devices. Support a311d, s922x, s905x3, s905x2, s912, s905d, s905x, s…...

象棋AI连线工具VinXiangQi:让深度学习成为你的专属象棋教练

象棋AI连线工具VinXiangQi:让深度学习成为你的专属象棋教练 【免费下载链接】VinXiangQi Xiangqi syncing tool based on Yolov5 / 基于Yolov5的中国象棋连线工具 项目地址: https://gitcode.com/gh_mirrors/vi/VinXiangQi 想在下棋时获得职业选手级别的AI指…...

小职场上下级相处:老板员工都该懂的默契-佛山鼎策创局破局增长咨询

于规模较小的职场环境之中,老板跟员工每日都近距离相接触,彼此间的关系呈现出微妙以及直接的态势。此处不像大公司那般存在诸多层级所形成的缓冲区域,在这样的小职场里,老板跟员工的一言一行都极有可能对团队整体氛围以及工作效率…...

EldenRingSaveCopier:三步实现艾尔登法环角色无损迁移

EldenRingSaveCopier:三步实现艾尔登法环角色无损迁移 【免费下载链接】EldenRingSaveCopier 项目地址: https://gitcode.com/gh_mirrors/el/EldenRingSaveCopier 你是否曾因为电脑更换、游戏重装或想在不同设备间同步进度而烦恼?数百小时的游戏…...

半监督学习:解决数据标注难题的实用方法

1. 半监督学习的概念与核心价值半监督学习(Semi-Supervised Learning)是机器学习领域一个既实用又巧妙的方法论,它完美解决了现实场景中标注数据稀缺的痛点。想象你正在教一个孩子识别动物:如果给每张动物图片都配上详细说明&…...

AI应用开发实战:从工具连接到智能体构建的完整指南

1. 项目概述:一个AI时代的“连接器”与“加速器”如果你最近在GitHub上搜索过AI相关的开源项目,大概率会看到一个名字:awesome-a2a。这个由ai-boost组织维护的项目,正迅速成为AI应用开发者和研究者们的一个热门“藏宝图”。它的全…...