数据库中的MVCC--多版本并发控制

一、前言

1、定义:MVCC(Multi-Version Concurrency Control),多版本并发控制,主要为了提高数据库

的并发性能。是MySQL的InnoDB存储引擎实现隔离级别的一种具体方式。用于实现提交读和可重

复读这两种隔离级别。

2、MVCC用更好的方式去处理读写请求,做到在发生读写请求冲突时不用加锁。

3、MVCC中的读指的是快照读,而不是当前读,当前读是一种加锁操作,是悲观锁。

4、当前读:读取的数据库记录都是当前最新版本的

select lock in share mode(共享锁)
select for update(排他锁)
update(排他锁)
insert(排他锁)
delete(排他锁)

5、快照读:读取的数据库记录不一定是当前最新版本的,有可能是之前版本的。

二、MVCC实现原理

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

1、undo log:回滚日志,存储进行insert,delete,update操作的时候产生的方便回滚的日志。

2、版本链:历史版本由回滚指针连接起来组成的一个链表,链尾是最旧的历史版本,链首是最新

的版本。

3、readview:确定在版本链中选择哪一条记录。所谓ReadView,是指事务(记做事务A)在某一

时刻给整个事务系统(trx_sys)打快照,之后再进行读操作时,会将读取到的数据中的事务id与

trx_sys快照比较,从而判断数据对该ReadView是否可见,即对事务A是否可见。

4、RC(读已提交)和RR(可重复读)级别下的innoDB快照读有什么不同?

因为Readview生成的时机不同,从而造成RC、RR级别下快照读的结果的不同。

(1)在RC隔离级别下,是每个快照读都会产生并获取最新的read view,所以在RC级别下的事务

中可以看到别的事务提交的更新。

(2)在RR隔离级别下,则是同一个事务中的第一个快照才会创建readview,之后的快照读获取

的都是同一个readview,所以对之后的修改不可见。

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

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

相关文章

【重点】【单调栈】【循环数组】503.下一个更大元素 II

题目 法1&#xff1a;单调栈循环数组 class Solution {public int[] nextGreaterElements(int[] nums) {int n nums.length;int[] res new int[n];Stack<Integer> stack new Stack<>();for (int i 2 * n - 1; i > 0; --i) { // 循环数组处理!!!while (!st…

Mybatis-Plus乐观锁配置使用流程【OptimisticLockerInnerInterceptor】

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家:人工智能学习网站 1.乐观锁实现 1.配置插件 1.XML方式 <bean class"com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerI…

C# .Net 开发设计多用户网上商城源码_OctShop

随着C#在TIOBE编程语言排行不断上升&#xff0c;这也标志着越来越多的程序员开始使用C#来开发项目了。在TIOBE2023年10月公布的排行中&#xff0c;C#和Java之间的差距越来越小了&#xff0c;仅为1.2%&#xff0c;随着C# .NetCore的免费开源&#xff0c;这一上升的趋势越来越明显…

MySQL视图特性

目录 视图概念基本使用创建视图修改视图会影响基表修改基表会影响视图删除视图 视图规则和限制 视图概念 视图是一个虚拟表&#xff0c;其内容由查询定义。同真实的表一样&#xff0c;视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表&#xff0c;基表的数据变…

[设计模式 Go实现] 行为型~中介者模式

中介者模式 中介者模式封装对象之间互交&#xff0c;使依赖变的简单&#xff0c;并且使复杂互交简单化&#xff0c;封装在中介者中。 例子中的中介者使用单例模式生成中介者。 中介者的change使用switch判断类型。 mediator.go package mediatorimport ("fmt"&q…

Python 编写代码的工具-交互式环境

交互式环境意思就是我们输入一行代码&#xff0c;按回车&#xff0c;代码就会立马执行并产生结果和显示在窗口中。 要打开Python交互式环境&#xff0c;具体操作如下&#xff08;win系统&#xff09;&#xff1a; 键盘WINR&#xff0c;再输入指令“cmd”,就可以打开命令提示符…

win下持续观察nvidia-smi

简介&#xff1a;在Windows操作系统中&#xff0c;没有与Linux中watch命令直接对应的内置工具&#xff0c;但有1种方法快速简单的方法可以实现类似的效果&#xff0c;尤其是用于监控类似于nvidia-smi的命令输出。 历史攻略&#xff1a; Python&#xff1a;查看windows下GPU的…

Dubbo服务提供端处理请求的过程剖析

1 处理请求的过程概述 &#xff08;1&#xff09;消费端发起TCP连接后&#xff0c;服务提供方的NettyServer的connected方法将被调用&#xff1b; &#xff08;2&#xff09;因为Netty默认的线程模型为All&#xff0c;因此AllChannelHandler类把接收到的所有消息&#xff08;…

PaddlePaddle初使用

模型导出与预测 # -c 后面设置训练算法的yml配置文件 # -o 配置可选参数 # Global.pretrained_model 参数设置待转换的训练模型地址&#xff0c;不用添加文件后缀 .pdmodel&#xff0c;.pdopt或.pdparams。 # Global.save_inference_dir参数设置转换的模型将保存的地址。pytho…

数据库攻防学习之MySQL

MySQL 0x01mysql学习 MySQL 是瑞典的MySQL AB公司开发的一个可用于各种流行操作系统平台的关系数据库系统&#xff0c;它具有客户机/服务器体系结构的分布式数据库管理系统。可以免费使用使用&#xff0c;用的人数很多。 0x02环境搭建 这里演示用&#xff0c;phpstudy搭建的…

华为端口隔离高级用法经典案例

最终效果&#xff1a; pc4不能ping通pc5&#xff0c;pc5能ping通pc4 pc1不能和pc2、pc3通&#xff0c;但pc2和pc3能互通 vlan batch 2 interface Vlanif1 ip address 10.0.0.254 255.255.255.0 interface Vlanif2 ip address 192.168.2.1 255.255.255.0 interface MEth0/0/1 i…

基于SSM的校园快递管理系统

目录 前言 开发环境以及工具 项目功能介绍 学生&#xff1a; 管理员&#xff1a; 详细设计 获取源码 前言 本项目是一个基于IDEA和Java语言开发的基于SSM的校园快递管理系统应用。应用包含学生端和管理员端等多个功能模块。 欢迎使用我们的校园快递管理系统&#xff01;我…

厦门大学OpenHarmony技术俱乐部开创“1+N”新模式,加速推动产学研融合

12月29日,OpenHarmony技术俱乐部再添重将——在多方见证下,厦门大学OpenHarmony技术俱乐部在翔安校区益海嘉里楼报告厅正式揭牌成立,现场出席领导及师生代表近千人。 成立仪式现场 OpenHarmony技术俱乐部 携手厦门大学共绘开源生态新图景 OpenHarmony是由开放原子开源基金…

揭示AUTOSAR中隐藏的漏洞

AUTOSAR是一个普遍采用的软件框架&#xff0c;用于各种汽车零部件&#xff0c;如ABS, ECU,自动照明、环境控制、充电控制器、信息娱乐系统等。AUTOSAR的创建目的是促进汽车零部件之间形成标准接口&#xff0c;可以在不同制造商之间互通。 因此&#xff0c;任何配备微控制器(MC…

CGAL的无限制的Delaunay图

本章描述了构建L∞距离下线段Delaunay图的算法和几何特征。这些特征还包括绘制L∞距离下线段Delaunay图对偶&#xff08;即L∞距离下线段Voronoi图&#xff09;边缘的方法。L∞算法和特征依赖于欧几里得&#xff08;或L2&#xff09;距离下的线段Delaunay图算法和特征。L∞度量…

redis 面试问题 (更新中 ing)

reids 是做什么的 为什么那么快 有哪些使用场景 1.数据缓存 2.计数器 3.限时 4.限流 5.分布式锁 6.队列 7.发布 订阅 redis有哪些 数据结构 常用的 string 对字符串 、整数、浮点数list 链表 &#xff0c;字符串set 不重复集合 &#xff0c;交集、并集 差集hash 无序散列…

月报总结|Moonbeam 12月份大事一览

一转眼已经到年底啦。本月&#xff0c;Moonbeam基金会发布四个最新战略重点&#xff1a;跨链解决方案、游戏、真实世界资产&#xff08;RWA&#xff09;、新兴市场。其中在新兴市场方面&#xff0c;紧锣密鼓地推出与巴西公司Grupo RO的战略合作。 用户教育方面&#xff0c;为了…

大创项目推荐 深度学习人脸表情识别算法 - opencv python 机器视觉

文章目录 0 前言1 技术介绍1.1 技术概括1.2 目前表情识别实现技术 2 实现效果3 深度学习表情识别实现过程3.1 网络架构3.2 数据3.3 实现流程3.4 部分实现代码 4 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习人脸表情识别系…

如何使用Python3 Boto3删除AWS CloudFormation的栈(Stacks)

文章目录 小结问题及解决有关Json文件的输入和输出使用Python3及正则表达式查找字符串包含某个子字符串使用Python3 Boto3删除AWS CloudFormation的栈&#xff08;Stacks&#xff09; 参考 小结 本文记录了使用Python3的Boto3包删除AWS CloudFormation的栈&#xff08;Stacks&…

Git从远程仓库拉取指定的分支

一、git clone 命令获取 使用git管理代码版本的时候&#xff0c;本地分支默认与远程同名分支建立追踪关系。文章开始也提到git clone <url>命令默认将整个远程版本库克隆到本地&#xff0c;但是git clone -b <分支名称>命令可以将指定的某一个远程分支拉取到我们本…