MySQL并发问题区别-MVCC如何解决的

server/2024/12/28 19:33:30/

脏读

事务a,事务b,b读到了a刚修改未提交的数据

不可重复读

针对同一行记录,两次读到的结果不一致
(范围是一行)

幻读

范围比不可重复读大很多,是表的范围,事务a第一次查的时候不存在,后面事务b插入提交,事务a第二次查的时候又发现多了数据,仿佛存在幻影

脏读是什么措施都没有,MVCC解决的主要是RC和RR
RC是读已提交,每次查询新建一个ReadView,通过MVCC规则确定访问数据的历史版本
RR是可重复读,只有事务第一次Select才会新建ReadView,后续查询除非是本事务修改或者显式当前读(Select * From 。。for Update/delete/insert),否则查询结果直接复用前面的ReadView,直接返回旧的读取结果。

MVCC本质上是无锁实现,乐观锁思想,提高了并发能力,比锁的效率要高很多


http://www.ppmy.cn/server/154000.html

相关文章

zabbix5.0版本(安装部署+添加服务器+拆分数据库)

目录 1.监控内容 2.监控工具 3.Zabbix安装 4.Zabbix添加监控服务器 5.拆分数据库 本篇文章介绍zabbix监控,监控是对我们操作系统进行不间断的监控,这是软件生命周期非常重要的一环,可以做到事前告警,事后根据监控内容排查问题…

vs2022 C/C++安装额外库有感

网上找的安装xxx库总有一大堆说要搞cmake的,对于没用过cmake又没啥这方面专业名词概念的小白实在很难受,大概讲一下 如果你只是想要安装某个库到你的项目上,你不需要用cmake专门去编译一个项目,实际上也用不到cmake,你…

三层交换机配置

一,三层交换 概念:三层交换技术就是:二层交换技术三层转发技术(路由器功能)。它解决了局域网中网段划分之后,网段中子网必须依赖路由器进行管理的局面,解决了传统路由器低速,复杂所造成的网络瓶颈问题。 …

python 聚类实战

目录 效果图: 代码: 效果图: 代码: import numpy as np import cv2 from sklearn.cluster import DBSCAN# 创建一个二值图像作为示例 # 1表示线段上的点,0表示背景 binary_image = np.zeros((100, 100), dtype=int)# 假设有两条线段,分别是: # 线段1:从 (20, 20) 到…

【面试题二】 2024 大厂进阶Vue3面试题及答案(10道)

Vue 3 进阶面试题及答案 1. Vue 3 的数据响应原理是什么? 答案概要: Vue 3 使用了代理 (Proxy) 来替代 Vue 2 中的 Object.defineProperty 实现数据的响应式。具体来说: 当数据被初始化时,Vue 3 会利用 ES6 的 Proxy 对象来代理…

linux中,redis分布式集群搭建

redis分布式集群(分布式存储)1.redis分布式高可用存储概念核心概念:哈希槽crc算法计算key值,对16384取余,值在0-16383之间crc % int ...结论:判断redis集群是否高可用的标准,哈希槽是否完全利用2.redis分布式高可用集群搭建 (1)修改并同步配置文件(2)使用命令创建集群(1)修改并…

Spring Boot 中 RabbitMQ 的使用

目录 引入依赖 添加配置 Simple(简单模式) 生产者代码 消费者代码 ?编辑 Work Queue(工作队列) 生产者代码 消费者代码 Publish/Subscribe(发布/订阅) 生产者代码 消费者代码 Routing&#x…

【ES6复习笔记】解构赋值(2)

介绍 解构赋值是一种非常方便的语法,可以让我们更简洁地从数组和对象中提取值,并且可以应用于很多实际开发场景中。 1. 数组的解构赋值 数组的解构赋值是按照一定模式从数组中提取值,然后对变量进行赋值。下面是一个例子: con…