MVCC是什么


程序员的公众号:源1024获取更多资料,无加密无套路!

最近整理了一波电子书籍资料,包含《Effective Java中文版 第2版》《深入JAVA虚拟机》,《重构改善既有代码设计》,《MySQL高性能-第3版》,《Java并发编程实战》等等
获取方式: 关注公众号并回复 电子书 领取,更多内容持续奉上


MVCC(Multi-Version Concurrency Control),即多版本并发控制,是一种数据库的并发控制机制。

MVCC是一种用来解决读写冲突的无锁并发控制,到底解决了什么问题呢?

  • 在并发读写时,可以在读操作时不阻塞写操作,写操作时也不阻塞读操作,提高了数据库并发读写的性能。

  • 解决脏读、幻读、不可重复读等事务隔离问题。

MVCC原理:

主要依赖于记录中的三个隐藏字段、undolog,read view来实现。

  • 隐藏字段

    ​每行记录都隐含DB_TRX_ID,DB_ROLL_PTR,DB_ROW_ID三个字段。

    ​DB_TRX_ID:记录创建这条记录或者最后一次修改该记录的事务id

    ​DB_ROLL_PTR:回滚指针,指向上一个旧版本

    ​DB_ROW_ID:隐藏的主键

  • undolog

回滚日志,在进行insert,delete,update操作的时候产生的方便回滚的日志。

  • Read View

事务进行快照读操作时生成的读视图,在该事务执行快照读的那一刻,系统会生成一个快照,记录此时事务的id,用来做可见性判断的,判断当前事务能够看到哪个版本的数据,有可能读取到的是最新的数据,也有可能读取到的是当前记录的undolog中某个版本的数据。

总结:

  1. 在MVCC中,每个数据行都会维护多个版本。每当对一行数据进行更新操作时,都会生成新的版本。每个版本都有一个时间戳,用于标识该版本的创建时间。

  2. 在读取数据时,事务只能看到创建时间早于事务开始时间的版本。

  3. 当写操作时,会生成新的版本并更新到数据行中。旧的版本仍然存在,不会被删除。以便正在进行的其他事务可以继续读取到旧的版本,不会被阻塞。

  4. MVCC版本控制机制维护了数据的一致性和隔离性。事务开始时,会记录当前的最新版本号。在事务执行过程中,只能读取到小于事务开始时的版本,保证读取的数据在事务开始时是一致的​。


 系列文章索引

MyBatis的插件能在哪些地方进行拦截?

了解MyBatis的缓存机制吗

面试官:谈谈对volatile的理解

Spring中用到了哪些设计模式

面试官:说一下SQL的执行过程

线程池的工作原理


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/259236.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

做一个类似一点洗鞋上门预约软件需要有哪些功能?

专业洗衣洗鞋店管理软件,轻松实现衣物和鞋子的收取、清点、分拣、清洗、监督、配送、跟踪,让企业管理更高效。同时,简化洗涤厂各个环节,提升洗衣洗鞋服务质量与效率,并且可定制功能。 互联网洗衣洗鞋小程序开发&#x…

uniapp页面跳转函数

1.在需要跳转的类加一个点击事件click 2.写一个跳转函数 ToSetting() {uni.navigateTo({url:"/pages/tabbar-5-detial/setting/setting"})} ok了。 跳转的页面是静态页面,即没有从上一个页面获取数据。 最初级的页面跳转。。。

带大家做一个,易上手的家常辣子鸡

先从冰箱拿出鸡肉解冻 拿小半根葱 去掉最外面一层皮 切成小段 最备好 花椒 干辣椒 准备四五个大料 起锅烧油 这道菜需要放其他菜两到三倍的油 油温上来之后 放入干辣椒和花椒进行翻炒 等它们都烧黑之后捞出来 这样 辣味就留在油里面了 然后 倒入鸡肉 葱段 大料 然后 倒…

honle电源维修UV电源控制器EVG EPS40C-HMI

好乐UV电源控制器维修;honle控制器维修;UV电源维修MUC-Steuermodul 2 LΛmpen D-82166 主要维修型号: EVG EPS 60/120、EVG EPS 100、EVG EPS200、EVG EPS 220、EVG EPS 340、EVG EPS40C-HMI、EVG EPS60 HONLE好乐uv电源维修故障包括&#…

0012Java程序设计-ssm医院预约挂号及排队叫号系统

文章目录 **摘** **要**目 录系统实现5.2后端功能模块5.2.1管理员功能模块5.2.2医生功能模块 开发环境 摘 要 网络的广泛应用给生活带来了十分的便利。所以把医院预约挂号及排队叫号管理与现在网络相结合,利用java技术建设医院预约挂号及排队叫号系统,实…

【js】js实现多个视频连续播放:

文章目录 一、效果&#xff1a;二、实现&#xff1a; 一、效果&#xff1a; 二、实现&#xff1a; <!DOCTYPE html> <html> <head><title>Video Player</title><style>#progressBar { width: 800px;height: 20px;background-color: #dd…

SQL数据库知识点总结归纳

前后顺序可以任意颠倒,不影响库中的数据关系 关系数据库的逻辑性强而物理性弱,因此关系数据库中的各条记录前后顺序可以任意颠倒,不影响库中的数据关系 一名员工可以使用多台计算机(1:m),而一台计算机只能被一名员工使用(1:1),所以员工和计算机两个实体之间是一对多…

驾驭苹果的人工智慧模式:克服反击与应对挑战

苹果一年一度的秋季「春晚」时间越来越近&#xff0c;但在大模型浪潮下&#xff0c;苹果何时推出自己的「苹果GPT」成了另一个关注的话题。 毕竟&#xff0c;前有华为&#xff0c;后有小米&#xff0c;在中国手机厂商争相将大模型装进移动终端的同时&#xff0c;苹果却依旧对A…

当下流行视频剪辑软件会声会影2024,让你的视频制作更精彩

大家好呀&#xff01;今天小编给大家介绍一款超赞的视频编辑软件——会声会影2024&#xff01; 当下流行视频剪辑软件会声会影2024&#xff0c;让你的视频制作更精彩&#xff0c;会声会影2024不仅提供了各种酷炫的特效和滤镜&#xff0c;还有更多令人惊叹的功能等待着你的发掘…

聚类分析 | Matlab实现基于谱聚类(Spectral Cluster)的数据聚类可视化

聚类分析 | Matlab实现基于谱聚类(Spectral Cluster)的数据聚类可视化 目录 聚类分析 | Matlab实现基于谱聚类(Spectral Cluster)的数据聚类可视化效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现基于谱聚类(Spectral Cluster)的聚类算法可视化&#xff08;完…

043:vue项目一直出现 sockjs-node/info?t=XX的解决办法

第043个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下&#xff0c;本专栏提供行之有效的源代码示例和信息点介绍&#xff0c;做到灵活运用。 &#xff08;1&#xff09;提供vue2的一些基本操作&#xff1a;安装、引用&#xff0c;模板使…

淘宝API接口系列丨商品详情数据接口丨关键词搜索商品列表接口丨商品评论,销量接口

要对接淘宝API接口&#xff0c;可以按照以下步骤进行操作&#xff1a; 注册成为淘宝开放平台开发者&#xff0c;并创建一个应用。在应用创建页面&#xff0c;需要填写应用的名称、描述等信息&#xff0c;并设置应用的API权限等级。获取App Key和App Secret。在应用创建后&…