是什么?

MVCC就是多版本并发控制,实现了【读-写冲突不加锁】,【非阻塞并发读】

MVCC只针对读已提交和可重复读,如果是读未提交,每次都是当前读

**基本思想是:**在每次【更新操作】时,旧版本的数据保存在【undo log日志中】并用【回滚指针】形成一条【版本链】,读数据的时候通过【readview视图】,拿到【版本链】中的旧数据,解决了读-写加锁效率低的问题

对数据库的并发控制:

既然有了MVCC不加锁解决读-写冲突,那么可以用MVCC再搭配乐观锁或者悲观锁去解决写-写冲突,完成对数据库的并发控制

  • MVCC + 悲观锁 MVCC解决读写冲突,悲观锁解决写-写冲突。
  • MVCC + 乐观锁 MVCC解决读写冲突,乐观锁解决写-写冲突。

实现原理:

主要依靠【undo log日志】、【readview视图】和记录中的【三个隐式字段】实现

  • 隐式字段:

    • DB_ROW_ID: B+树要求每个表都有一个主键,如果没有会自动寻找第一个非空的唯一索引作为主键,如果还是没有就自己生成一个自增主键(跟MVCC没什么关系)
    • DB_TRX_ID:记录每次【增删改操作】的事务自增ID,查询不会自增
    • DB_ROLL_PTR: 回滚指针,指向上一个版本记录,形成一条版本链
  • undo log日志:记录每次修改前的数据,保证事务的回滚操作
  • read view视图:维护了【当前未提交事务ID数组】和数组中的【最小id】和【最大id】,用来判断当前记录是否可读
    • 当前记录的事务id<未提交事务的最小id,说明读的记录是已提交的,则可读

    • 当前记录的事务id>未提交事务的最大id,说明则当前读的记录在 这个版本是在生成快照之后产生的,则不可读,要沿着回滚指针比较上一次事务id

    • 最小id<=事务id<=事务的最大id,判断事务id是否在未提交事务id的数组中,若在说明还没提交,则不可读,不在则可读

MySQL-MVCC机制相关推荐

  1. MySQL MVCC机制解析

    1.MVCC(multi version concurrent control)机制 多版本并发控制机制,专门控制多个事物并发运行的时候,互相之间会如何影响. MVCC机制 = undo log多本本 ...

  2. 吊打面试官系列之---吃透MySQL mvcc机制--锁模块

    目录 事务四大特性(ACID) 事务并发访问引起的问题以及如何避免 1.更新丢失--mysql所有事务隔离级别都可以在数据库层面上均可避免 2.脏读--read-committed事务隔离级别以上可避 ...

  3. Mysql MVCC机制原理

    目录 什么是MVCC Mysql的锁和事务隔离级别 Mysql的undo log MVCC的实现原理 什么是MVCC MVCC,全称Multi-Version Concurrency Control, ...

  4. mysql mvcc机制rc_Mysql中MVCC的使用及原理

    数据库默认隔离级别:RR(Repeatable Read,可重复读),MVCC主要适用于Mysql的RC,RR隔离级别 创建一张存储引擎为testmvcc的表,sql为: CREATE TABLE t ...

  5. 从ReadView深入理解MySql MVCC原理

    MySql MVCC 机制 在说MVCC机制前我们先了解ReadView. ReadView是什么呢?在我们平时执行一个事务的时候,就会生成一个ReadView,ReadView的组成结构大致如下 参 ...

  6. MySQL的MVCC机制是什么?

    MySQL的MVCC机制是什么? MySQL的MVCC机制 Multiversion concurrency control 多版本并发控制并发访问(读或者写)数据库时,对正在事务内处理的数据做多版本 ...

  7. mysql 锁机制 mvcc_轻松理解MYSQL MVCC 实现机制

    轻松理解MYSQL MVCC 实现机制 轻松理解MYSQL MVCC 实现机制 #### 1. MVCC简介 ##### 1.1 什么是MVCC MVCC是一种多版本并发控制机制. ##### 1.2 ...

  8. MySQL - 多版本控制 MVCC 机制初探

    文章目录 生猛干货 MVCC (Multi-Version Concurrency Control)原理 快照读与当前读 MVCC 多版本实现 总结 搞定MySQL 生猛干货 带你搞定MySQL实战, ...

  9. mysql 默认事务隔离级别_一文读懂MySQL的事务隔离级别及MVCC机制

    回顾前文: <一文学会MySQL的explain工具> <一文读懂MySQL的索引结构及查询优化> (同时再次强调,这几篇关于MySQL的探究都是基于5.7版本,相关总结与结论 ...

  10. 【黄啊码】MySQL入门—14、细说数据库的MVCC机制

    大家好,我是黄啊码.上一篇文章中,我们讲到了锁的划分,以及乐观锁和悲观锁的思想.今天我们就来看下 MVCC,它就是采用乐观锁思想的一种方式.那么它到底有什么用呢? 我们知道事务有 4 个隔离级别,以及 ...

最新文章

  1. 关于softmax loss这个概念
  2. MySQL中序列的作用_MySql中序列的应用和总结
  3. Centos7访问本地电脑共享文件夹遇到的问题
  4. 人工智能将助力智能家居产业发展
  5. 05NumPy--5.4随机数
  6. mysql支持3条用来创建循环的语句_MySql学习笔记——存储过程
  7. Tecplot 10 将输入的多个plt文件做成动画 :
  8. android 照片同步 icloud,如何将iCloud照片传输到Android手机
  9. ASP.NET 学习路线图
  10. Python实战 | 送亲戚,送长辈,“ 月饼 ”可视化大屏来帮忙。
  11. 英特尔收购Barefoot背后的逻辑
  12. 牛客NC23053月月查华华的手机 题解(指针优化)
  13. 屏蔽【CSDN站内搜索聚合】,百度搜索结果过滤【CSDN已经为您找到】
  14. guava的String之Splitter
  15. 04.reactive
  16. 【C语言基础练习】100匹马驮100担货,大马一匹驮3担,中马一匹驮2担,小马两匹驮1担。试编写程序计算大、中、小马的数目。
  17. 计算机毕业设计基于Android宠物领养救助系统app
  18. java tts开源,程序员罗杰-开源的TTS软件Flite从安装到使用
  19. svn——“验证位置时发生错误” e170001: 认证失败
  20. python3 copy_Python3数据的深浅copy和赋值 | 吴老二

热门文章

  1. 填写的姓名或身份证与公众号主体信息不一致
  2. 分布式面试全家桶:分布式事务+分布式锁+分布式缓存+分布式面试题+分布式项目
  3. pythonxml解析_python之XML解析
  4. 51单片机 蓝牙 循迹 ,定时器产生4个PWM
  5. Umi v3 Ant Design Pro v5 从零开始实战视频教程(34 个视频)
  6. 数据库查询优化技术(一):数据库与关系代数
  7. SpringMvc- 请求处理参数 和 响应数据处理
  8. 视频行为识别(一):deepmind / kinetics-i3d安装及使用
  9. PAT-A 2022.3.5题目(仅含1,3题AC代码)
  10. QML类型:IntValidator、DoubleValidator、RegularExpressionValidator