码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 什么是MVCC?


    多版本并发控制:MVCC 是一种 并发控制的方法,一般在 数据库管理系统中,实现对数据库的并发访问;在编程语言中实现事务内存。 读取数据时通过⼀种类似 快照 的⽅式将数据保存下来,这样读锁就和写锁不冲突了,不同的事务session会看到⾃⼰特定版本的数据,版本链

    MVCC只在 READ COMMITTED 和 REPEATABLE READ 两个隔离级别下⼯作。其他两个隔离级别够和MVCC不兼容, 因为 READ UNCOMMITTED 总是读取最新的数据⾏, ⽽不是符合当前事务版本的数据⾏。⽽ SERIALIZABLE 则会对所有读取的⾏都加锁。

    聚簇索引记录中有两个必要的隐藏列:


    trx_id :⽤来存储每次对某条聚簇索引记录进⾏修改的时候的事务id。

    roll_pointer :每次对哪条聚簇索引记录有修改的时候,都会把⽼版本写⼊undo⽇志中。这个
    roll_pointer就是存了⼀个指针,它指向这条聚簇索引记录的上⼀个版本的位置,通过它来获得上⼀个版本的记录信息。(注意插⼊操作的undo⽇志没有这个属性,因为它没有⽼版本)

    已提交读和可重复读的区别就在于它们⽣成ReadView的策略不同。

    开始事务时创建readview,readView维护当前活动的事务id,即未提交的事务id,排序⽣成⼀个数组


    访问数据,获取数据中的事务id(获取的是事务id最⼤的记录),对⽐readview:


    如果在readview的左边(⽐readview都⼩),可以访问(在左边意味着该事务已经提交)


    如果在readview的右边(⽐readview都⼤)或者就在readview中,不可以访问,获取roll_pointer,取上⼀版本重新对⽐(在右边意味着,该事务在readview⽣成之后出现,在readview中意味着该事务还未提交)


    已提交读隔离级别下的事务在每次查询的开始都会⽣成⼀个独⽴的ReadView,⽽可重复读隔离级别则在第⼀次读的时候⽣成⼀个ReadView,之后的读都复⽤之前的ReadView。


    这就是Mysql的MVCC,通过版本链,实现多版本,可并发读-写,写-读。通过ReadView⽣成策略的不同实现不同的隔离级别。

     

  • 相关阅读:
    使用果创云API低代码,快速收集vue的前端报错
    java毕业设计软件工程在线学习平台源码+lw文档+mybatis+系统+mysql数据库+调试
    固定资产管理系统给企业带来的价值?
    【计算机毕业设计】36.网易购商城购物平台源码
    二十、泛型(5)
    蒙特卡洛树搜索方法介绍——后台规划(background planning)与决策时规划(decision-time planning)
    Android 性能优化相关
    铱钌合金/氧化铱仿生纳米酶|钯纳米酶|GMP-Pd纳米酶|金钯复合纳米酶|三元金属Pd-M-Ir纳米酶|中空金铂合金纳米笼核-多空二氧化硅壳纳米酶
    Vulhub靶场-KIOPTRIX: LEVEL 1.1
    双位置继电器XJLS-8G/220
  • 原文地址:https://blog.csdn.net/m0_70734549/article/details/126250062
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号