首页 > 其他分享 >MVCC多版本并发控制

MVCC多版本并发控制

时间:2024-06-20 22:29:21浏览次数:19  
标签:记录 READ MVCC undo 并发 版本 ReadView SELECT

MVCC (MultiVersion Concurrency Control) 多版本并发控制,是指在使用READ COMMITTED、REPEATABLE READ这两种隔离级别的事务执行SELECT操作时访问记录的版本链的过程,使不同事务的读写操作能够并发执行,提升系统性能。MVCC机制的核心是在做SELECT操作前会生产一个ReadView,READ COMMITTD在每⼀次进⾏普通SELECT操作前都会⽣成⼀个ReadView,⽽REPEATABLE READ只在第⼀次进⾏普通SELECT操作前⽣成⼀个ReadView,之后的查询操作都重复使⽤这个ReadView。通过ReadView找到符合条件的记录版本(历史版本是由undo⽇志构建的),其实就像是在⽣成ReadView的那个时刻做了⼀次时间静⽌(就像⽤相机拍了⼀个快照),因此利用MVCC机制读取数据又叫快照读,也叫一致性读。

版本链

事务每次对记录进行修改,都会记录一条undo日志,每条undo日志就是关于这条记录的一个版本,这些undo日志串联起来形成一个链表结构,就称为当前记录的版本链。对于InnoDB存储引擎来说,聚簇索引的记录都包含两个隐藏列:trx_id和roll_pointer,每次一个事务对聚簇索引的记录进行修改时,都会把事务id写给该记录的trx_id,每个记录的版本链是该记录的历史版本通过单链表的形式连接而成的,roll_pointer相当于链表的尾指针,指向上一条历史版本。

cf33052ad6a9470a9e367c578c0d21bb.png

版本链的头结点就是当前

标签:记录,READ,MVCC,undo,并发,版本,ReadView,SELECT
From: https://blog.csdn.net/xing_jian1/article/details/139843734

相关文章

  • 复旦发布开源版本的EMO,只需输入一段音频和一张照片就可以让人物开始说话。
    之前和大家介绍过阿里的EMO,用户只需要提供一张照片和一段任意音频文件,EMO即可生成会说话唱歌的AI视频。最长时间可达1分30秒左右。感兴趣的小伙伴可以点击下面链接阅读。近日,复旦发布了一个开源版本的EMO。通过输入音频让面部照片开始说话,并且有对于的表情。看起来效果很自......
  • 高版本SpringCloud配置跨域
    一、什么是跨域跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制。同源策略,指的是协议,域名,端口都要相同,其中有一个不同都会产生跨域。跨域相关含义:Access-Control-Allow-Origin:服务器允许请求的源;Access-Con......
  • Linux kernel版本升级实例
    内核版本漏洞           内核离线升级     https://elrepo.org/linux/kernel/el7/x86_64/RPMS/    1.下载内核相关的rpm包            2.安装内核源        rpm-ihvkernel*--nodeps--force  ......
  • flink版本: 1.14.6 flink水位生成以及基于水位触发窗口的计算
    Flink是间断性(punctuate)或者周期性(periodic)生成水位线的1.定义和用途*punctuate:为每条消息都尝试生成watermark,这提供了更细粒度的控制,但增加了不必要的计算开销*periodic:周期性的生成watermark,可以通过env.getConfig().setAutoWatermarkInterval(1*1000L)设置周期间......
  • RTX5全家桶源码综合模板发布,含FreeRTOS内核版本,将其打造成直接面向实际项目应用的综合
    【说明】1、RTX5全家桶的优势就是简单易用,初学的话,上手很快,稳定性也是杠杠的,且容易做稳定。2、同时RTX5也是有汽车级,工业级,医疗和铁路安全认证,只是安全级别比ThreadX要稍微低些。3、当前RTX5中间件源码已经开源了,大大方便大家问题的排查。同时提供了FreeRTOS内核版本,方便大家选......
  • 深入理解AQS:Java并发编程中的核心组件
    目录AQS简介AQS的设计思路AQS的核心组成部分状态(State)同步队列(SyncQueue)条件队列(ConditionQueue)AQS的内部实现节点(Node)锁的获取与释放独占锁共享锁条件变量AQS的应用案例ReentrantLockCountDownLatchSemaphore总结参考文献AQS简介AbstractQueuedSynchronizer(AQ......
  • 【Android】Android Studio版本手动升级到指定版本方法
    前言AndroidStudio本身存在自动升级的功能,但是这个功能使用的时候基本都是要升级到最新版本,但是有时候我们也不想升级到最新版本,是想升级到某一个版本,这个时候,AndroidStudio的自动升级版本的功能就无法使用了,需要我们进行手动升级。自动升级方法点击这里就可升级了,自......
  • 版本管理I
    灰度发布        灰度发布,也称为金丝雀发布(CanaryRelease),是一种软件发布策略,其主要目的是在将新版本部署到生产环境之前,对一小部分用户群进行测试;这种方法允许开发者在新功能或更新出现问题时,可以立即回滚到稳定版本,从而减少对整个用户群的影响灰度发布的基本流程如......
  • Appium-Python-Client 4.+版本踩坑实录
    Appium-Python-Client4.+版本TouchAction类被appium.webdriver.extensions.action_helpers.ActionHelpers取代使用方法#点击坐标self.driver.tag(positions,duration=duration)#屏幕元素滑动self.driver.scroll(origin_el=origin_el,destination_el=destination......
  • 鸿蒙内核源码分析(并发并行篇) | 听过无数遍的两个概念
    理解并发概念并发(Concurrent):多个线程在单个核心运行,同一时间只能一个线程运行,内核不停切换线程,看起来像同时运行,实际上是线程被高速的切换.通俗好理解的比喻就是高速单行道,单行道指的是CPU的核数,跑的车就是线程(任务),进程就是管理车的公司,一个公司可以有很多台车.并发......