下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MVCC高频面试题及详细答案(实战版)一、基础概念类(入门必问)1、什么是MVCC?它的核心作用是什么?MVCC即多版本并发控制,是InnoDB存储引擎实现数据库高并发读写的核心机制。简单来说,它不会直接对数据加锁阻塞读操作,而是通过保存数据的多个历史版本,让读操作读取历史版本数据,写操作操作最新数据,以此实现读写不阻塞、读读不阻塞。核心作用主要有两点:1)大幅提升数据库并发性能,解决传统锁机制读写互斥的性能瓶颈;2)支撑InnoDB的可重复读、读已提交两种事务隔离级别,解决脏读、不可重复读问题。2、MVCC适用于哪些事务隔离级别?为什么?MVCC仅针对读已提交(RC)和可重复读(RR)两种隔离级别生效,这也是InnoDB默认使用的两种隔离级别。原因:1)读未提交:可以直接读取未提交的脏数据,不需要数据版本控制,无需MVCC;2)串行化:完全通过锁机制实现事务串行执行,所有读写都会互斥阻塞,不需要MVCC;3)RC、RR需要兼顾并发和数据一致性,依赖MVCC的多版本快照机制实现无锁读。3、什么是快照读?什么是当前读?二者区别是什么?这是MVCC最核心的两组概念,InnoDB所有读操作只分为这两类:快照读:读取数据的历史快照版本,无锁、非阻塞,依靠MVCC实现。常见语句:普通SELECT查询(不加锁的查询)。当前读:读取数据的最新版本,会加行锁,阻塞其他写操作。常见语句:INSERT、UPDATE、DELETE、SELECT...FORUPDATE、SELECT...LOCKINSHAREMODE。核心区别:快照读走MVCC多版本,无锁并发;当前读走锁机制,保证数据最新,牺牲并发性能。二、核心原理类(面试重点)4、MVCC的底层三大核心组件是什么?各自作用?MVCC依靠隐藏列、undolog、readview三者配合实现,缺一不可。1)数据表隐藏列InnoDB每张表都会默认生成三个隐藏列,用于记录数据版本信息:DB_TRX_ID:6字节,记录最后修改这条数据的事务ID;DB_ROLL_PTR:7字节,回滚指针,指向这条数据的上一个历史版本(undolog地址);DB_ROW_ID:6字节,行唯一标识(无主键时用作默认主键,和MVCC核心逻辑无关)。2)undolog(回滚日志)用于保存数据修改前的历史版本。每次修改数据,都会将旧数据存入undolog,通过回滚指针串联成一条版本链。事务回滚时依靠undolog恢复数据,快照读时依靠版本链查找对应历史数据。3)readview(读视图)是事务快照读时生成的一致性视图,用来判断当前数据版本是否可见,过滤掉未提交、后续开启的事务数据,保证隔离性。5、详细说下readview的组成和可见性判断规则readview四个核心字段:1)m_ids:当前活跃、未提交的所有事务ID集合;2)min_trx_id:m_ids中的最小事务ID;3)max_trx_id:生成readview时,系统即将分配的下一个事务ID;4)creator_trx_id:当前生成readview的事务自身ID。数据版本可见性判断规则(核心):取出数据版本的DB_TRX_ID,按以下顺序判断:1)如果DB_TRX_ID==creator_trx_id:当前事务自己修改的数据,可见;2)如果DB_TRX_ID<min_trx_id:修改该数据的事务在当前事务开启前已提交,可见;3)如果DB_TRX_ID>=max_trx_id:修改该数据的事务在当前事务开启后才创建,不可见;4)如果min_trx_id<=DB_TRX_ID<max_trx_id:判断该ID是否在m_ids中,在则未提交、不可见;不在则已提交、可见。若当前版本不可见,通过回滚指针遍历版本链,重复判断,直到找到可见版本或遍历结束。6、RC和RR隔离级别下,readview生成时机有什么区别?(高频追问)这是两种隔离级别出现一致性问题的根本原因:读已提交(RC):每次快照读都会重新生成一个新的readview。优势:能实时查到其他事务已提交的最新数据;问题:同一事务内多次查询,结果可能不一致,产生不可重复读。可重复读(RR,InnoDB默认):事务内第一次快照读时生成readview,后续复用该视图。优势:整个事务的读写快照一致,同一事务多次查询结果不变,解决不可重复读;问题:无法感知事务开启后其他事务的新增数据,会出现幻读。7、MVCC版本链是如何生成的?举个简单流程1、初始状态:一条数据被事务A修改,记录当前事务ID到DB_TRX_ID,修改前的旧数据存入undolog;2、后续事务B再次修改该数据:新数据覆盖原数据,旧数据(事务A修改后的版本)存入undolog,新数据的回滚指针指向事务A的旧版本;3、多次修改后,所有历史版本通过回滚指针串联,形成一条从最新版本到最早版本的单向链表,也就是版本链;4、快照读时,根据readview从最新版本开始遍历版本链,匹配可见版本返回数据。三、经典问题与踩坑类(进阶面试)8、InnoDB的RR隔离级别,真的完全解决幻读了吗?没有完全解决,只能解决快照读的幻读,无法解决当前读的幻读。1)快照读(普通SELECT):依靠MVCC固定readview,事务内读取固定快照,不会读到其他事务新增的数据,无幻读;2)当前读(UPDATE/DELETE/FORUPDATE):每次都是读取最新数据,无快照机制。其他事务新增数据并提交后,当前读能查到新数据,依然会出现幻读。补充:InnoDB依靠间隙锁+临键锁,最大限度规避了当前读的幻读问题,但不是百分百彻底解决,极端场景仍会出现。9、MVCC能不能解决脏读、不可重复读、幻读?分情况说明1)脏读:RC、RR级别下,MVCC均可彻底解决。未提交的事务数据版本,不会被readview判定为可见,读不到脏数据。2)不可重复读:RC级别无法解决(每次读刷新视图);RR级别依靠固定视图,彻底解决。3)幻读:RR级别下,快照读无幻读,当前读存在幻读;RC级别全程存在幻读。10、undolog什么时候会被清理?会影响MVCC吗?undolog不会立即删除,因为需要支撑MVCC快照读,避免历史版本丢失导致查询异常。清理时机:当系统中没有任何事务需要读取该undolog对应的历史版本时,后台线程会自动回收清理。影响:如果长事务一直不提交,会持续持有旧的readview,导致大量undolog无法回收,日志文件膨胀、数据库性能下降,这是线上常见的慢查询、性能卡顿诱因。11、为什么InnoDB默认选择RR而不是RC?1、RC存在不可重复读,业务场景中容易出现数据不一致问题,比如同一事务多次查询结果不同,引发业务逻辑异常;2、RR隔离性更强,能规避大部分数据一致性问题,仅残留轻微的幻读问题,可通过锁机制弥补;3、早期MySQL版本中,RC会存在部分锁失效、并发异常的问题,RR的稳定性更高,更适配线上业务。四、实战对比类(高阶面试)12、MVCC和乐观锁、悲观锁的关系?1、悲观锁:基于阻塞锁机制,当前读就是悲观锁的实现,读写互斥,性能低、一致性强;2、MVCC:属于无锁并发机制,本质是乐观并发思想,假设数据冲突概率低,通过版本控制实现无锁读;3、三者可以共存:InnoDB中,快照读走MVCC,当前读走悲观锁,日常业务无需手动实现乐观锁,MVCC已经内置了乐观并发能力。13、MVCC有什么缺点?1、占用存储空间:需要存储大量undolog历史版本,增加磁盘、内存开销;2、长事务危害大:长事务导致undolog无法回收,引发日志堆积、查询性能下降;3、无法适配串行化隔离级别,高一致性场景仍需要依赖锁机制;4、RR级别下存在当前读幻读问题,无法完全保证串行一致性。14、一条普通SELECT查询的MVCC完整执行流程?1、开启事务,执行普通SELECT,判定为快照
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年医疗安全(不良)事件培训考核试题及答案
- 2025年医疗器械职业资格考试试题及答案解读
- 2025年医院感染控制与防范试题及答案解析
- 2025年易制毒易制爆危化品基础知识考试试题(含答案)
- 2025年育婴师职业技能资格考试题库(含答案)
- 2025年执业兽医考试练习题及详解附答案
- 2025年注册环保工程师(专业基础)考试题库(含答案)
- 2025年执业医师(外科学)模拟测试试卷
- 2025年中成药合理使用试题及答案
- 2025年中医妇科月经病诊疗中医基础试卷
- NIST AI RMF 1.0中文版 人工智能风险管理框架
- 2026年科普竞赛初赛试题附答案
- 雨课堂学堂在线学堂云《急救与心理技能(中南大学)》单元测试考核答案
- 2027届杭州学军中学高一物理第一学期期中教学质量检测模拟试题含解析
- 2026中共广东省委党校(广东行政学院)招聘教研人员16人备考试题含答案
- 山东青岛市2026-2027学年高三期初调研检测数学试题(含答案)
- 起重机电气控制系统操作与检修维护手册
- 2026年大模型解决方案架构师招聘笔试试(附答案)
- 2023年军事理论考试知识点大全
- 2026人教版六年级数学上册第四单元第5课《圆的面积(2)》课件
- 2026年环境监测采样人员考核试题含答案解析
评论
0/150
提交评论