了解MVCC
概念
MVCC,全称Multi-Version Concurrency Control,即多版本并发控制,是一种并发控制的方法,维护一个数据的多个版本,使得读写操作没有冲突,快照读为MySQL实现MVCC提供了一个非阻塞读功能。MVCC的具体实现还要依赖数据库记录中的三个隐式字段,undo log,readView。
当前读
读取的是记录的最新版本,读取时还要保证其他并发事务不能修改当前记录,会对读取的记录进行加锁。对于我们日常的操作,如:select...lock in share mode(共享锁),select... for update、update、insert、delete(排他锁)都是一种当前读。
快照读
简单的select(不加锁)就是快照读,快照读,读取的是记录数据的可见版本,有可能是历史数据,不加锁,是非阻塞读。
Read Committed:每次select,都生成一个快照读。
Repeatable Read:开启事务后第一个select语句才是快照读的地方。
Serializable:快照读会退化为当前读。
ibd2sdi ibd文件名 这条指令可以查看对应ibd文件中的信息。
undo log版本链
在执行修改操作前undo log会记录修改前的操作
执行修改后DB_TRX-ID和DB_ROLL_PTR都会进行相应的更新DB_TRX-ID更新为当前事务id DB_ROLL_PTR指向上一条记录在undo log中的存放地址
readview
min_ids 当前还未提交的事务id集合
min_trx_id 最小活跃事务id
max_trx_id 预分配事务id 当前最大事务id+1 因为事务id是自增的
creater_trx_id ReadView创建时的事务id
trx_id代表当前修改记录的事务id
当前隔离级别为RC
每执行一次快照读都会生成ReadView
这次读取的记录应该是DB_TRX-ID = 2 的数据
这次读取的记录应该是DB_TRX-ID = 3 的数据
当前隔离级别为RR
仅在事务第一次执行快照时生成ReadView后续复用
总结
redo log保证了事务的持久性
undo log保证了事务的原子性
redo log+undo log保证了事务的一致性
MVCC+锁保证了事务的隔离性
相关文章:

了解MVCC
概念 MVCC,全称Multi-Version Concurrency Control,即多版本并发控制,是一种并发控制的方法,维护一个数据的多个版本,使得读写操作没有冲突,快照读为MySQL实现MVCC提供了一个非阻塞读功能。MVCC的具体实现…...

WPF自定义控件的应用(DynamicResource的使用方法)
1 DynamicResource的使用方法 可以在字典文件 的抬头区写入数: <SolidColorBrush x:Key"PrimaryBackgroundColor" Color"#FFABAdB3"/><SolidColorBrush x:Key"TextBox.MouseOver.Border" Color"#FF7EB4EA"/>&l…...
Postgresql数据库密码忘记的解决
当您忘记PostgreSQL数据库的密码时,可以通过以下步骤来重置密码。这些步骤在Windows和Linux操作系统上大体相同,但具体操作路径和命令可能有所不同。 步骤一:找到并修改pg_hba.conf文件 定位安装目录: Windows:通常在PostgreSQL的安装目录下的data文件夹中。Linux:位置可…...
Flink SQL 基础操作
Flink SQL是建立在Apache Flink之上的SQL处理引擎,它允许用户以SQL的方式处理流数据和批数据。以下是一些Flink SQL的基础操作: 一、环境准备 1.启动flink集群 ./start-cluster.sh启动sql-client ./sql-client.sh二、数据源定义 创建表(…...

海思AE模块Lines_per_500ms参数的意义
基础知识 1秒(S)1000毫秒(ms)1000_000微妙(s)1000_000_000纳秒(ns) 1GHz1000Mhz1000_000KHz1000_000_000Hz 1Hz1/s 抗频闪原理 海思AE模块参数中有一个LinesPer500ms的参数,意思为500ms对应的曝光行数。此个参数和抗频闪有关。 我们知道: 50HZ…...

【代码随想录】区间和——前缀和方法
本博文为《代码随想录》学习笔记,原文链接:代码随想录 题目 原题链接:58. 区间和(第九期模拟笔试) 题目描述 给定一个整数数组 Array,请计算该数组在每个指定区间内元素的总和。 输入描述 第一行输入为…...
Bug 解决 | 前端项目无法正确安装依赖?
目录 1、网络问题 2、权限问题 3、版本冲突 4、缓存问题 5、依赖配置错误 6、系统环境问题 前端项目和后端项目一样,都需要用到很多第三方的类库依赖。目前基本上我们主流的前端项目都使用 Npm、Yarn 等包管理工具来管理项目依赖,正常情况下通过执…...

【mysql 第四篇章】bin log 的作用是啥呢?
一、redo Log 介绍 redo log 是一种偏向物理性质的重做日志,因为他里面记录类似的这样的东西,“对那个数据也中的什么记录,做了个什么修改”。它是 InnoDB 存储引擎特有的东西。 二、bin Log 日志 bin log 叫做归档日志,它里面…...

Linux 操作系统:基于环形队列的生产者消费者模型
Linux 操作系统:基于环形队列的生产者消费者模型 一、前言二、大致框架二、P操作、V操作三、生产者生产数据四、生产者获取数据五、代码测试六、所有代码 一、前言 环形队列采用数组模拟,用模运算来模拟环状特性。和基于阻塞队列的生产者消费者模型不同的…...
python求解二次方程
为了找到x和y之间的关系,并假设这种关系是一个二次函数,我们可以使用numpy的polyfit函数来拟合一个二次方程(即形式为y ax^2 bx c的方程)。然后,我们可以使用matplotlib来绘制散点图,并在图上添加最佳拟…...

Spring框架面试总结
Spring基础 什么是spring框架 Spring 框架是一个用于构建企业级 Java 应用程序的开源框架。【Java项目快速构建轻量级框架】我们一般说 Spring 框架指的都是 Spring Framework,它是很多模块的集合,使用这些模块可以很方便地协助我们进行开发。【根据模…...

java之网络编程篇
前言 网络编程就是计算机和计算机之间通过网络进行数据传输,下面介绍一些概念和如何实现UDP和TCP两种模式的传输。 一、常见的软件架构C/S和B/S C/S架构需要一个客户端软件程序服务器 B/S只需要打开网页服务器 C/S架构的优缺点和应用场景 优点:画面可以…...

stm32f103c8t6与TB6612FNG解耦测试
stm32f103c8t6与TB6612FNG解耦测试 本文操作方式: 忽略底层,只做上层, 所以前面全部照搬步骤,重在调试 文章目录 stm32f103c8t6与TB6612FNG解耦测试本文操作方式:创建基本工程(1)跳转此链接,创建(2)创建电机驱动文件夹(3)PWM原理(4)电机转动控制 oled调试和key调试(5)OLED转速…...
2253336 - 资源库 - OAC0 中的脱机状态
症状 资源库的状态显示为离线。 环境 SAP 内容服务器 6.50 或更高版本与 MaxDB 存储媒介结合使用对于状态为离线的资源库,测试报表 RSCMST 运行正常资源库可在应用程序中使用,没有任何问题 重现问题 启动事务 OAC0双击资源库按 "CSADMIN"…...

uni-app总结
1. <u-form-item label"报废人" ><u--input v-model"model.remark" border"bottom" placeholder"请输入"></u--input> </u-form-item> border"bottom" 报废日期 为了...

【JavaEE初阶】线程安全的集合类
📕 引言 我们之前讲过的集合类,,大部分都不是线程安全的. Vector, Stack, HashTable, 是线程安全的(都是自带了synchronized,不建议用), 其他的集合类不是线程安全的。 注意:加锁不能保证线程一定安全,不加锁也不能确定线程一定…...

关于Vue项目npm快捷键,点击run启动报错,及npm i也报错的解决办法
1.配置idea的npm 2.点击运行按钮 3.结果 分析原因及问题: npm i npm run dev 由于是刚刚从gitlab新拉的前端代码,可能没有用命令install过类似于没有编译过,所以执行一下上面的命令 结果报错如下: F:\tbyf\qjyy\hip-manager-ui&…...
React中,className属性自定义组件不生效的问题
在React中,className属性不仅适用于原生的HTML元素,也可以用于自定义组件。实际上,className属性是React中通用的属性,可以应用于任何React元素,无论是原生的HTML元素还是自定义的组件。 为什么使用className而不是cl…...
Ubuntu22.04搭建fabric开发环境、开发环境下运行链码
在智能合约开发过程中,开发人员需要一种快速、迭代地测试链码包的方法,而无需为每次修改运行链码生命周期命令。 使用 Fabric 二进制文件并启动peer处于开发模式(“DevMode”),然后将链码连接到peer。它允许您启动链代…...

[BSidesCF 2019]Kookie1
打开题目,看到 根据提示,账号:cookie。密码:monster。试一下登录,登陆成功 抓包看看信息 根据提示, 看一下返回包 账号要加username要改成admin,改一下试试 构造cookie 直接得到flag flag{c…...
力扣-131.分割回文串
题目描述 给你一个字符串 s,请你将 s 分割成一些 子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。 class Solution {List<List<String>> res new ArrayList<>();List<String> path new ArrayList<>();void…...

C++性能优化指南
思维导图(转载) https://www.processon.com/view/5e5b3fc5e4b03627650b1f42 第 1 章 优化概述 1.1 优化是软件开发的一部分 优化更像是一门实验科学。 1.2 优化是高效的 1.3 优化是没有问题的 **90/10 规则:**程序中只有 10% 的代码…...

DeepSeek R1 V2 深度探索:开源AI编码新利器,效能与创意并进
最近,AI界迎来了一位神秘的“突袭者”——DeepSeek团队悄无声息地发布了其推理模型DeepSeek R1的重磅升级版V2(具体型号R1-0528)。这款基于MIT许可的开源模型,在原版R1的基础上进行了多项令人瞩目的改进,正以其强大的潜…...

Unity使用代码分析Roslyn Analyzers
一、创建项目(注意这里不要选netstandard2.1会有报错) 二、NuGet上安装Microsoft.CodeAnalysis.CSharp 三、实现[Partial]特性标注的类,结构体,record必须要partial关键字修饰 需要继承DiagnosticAnalyzer 注意一定要加特性Diagn…...

day26-计算机网络-4
1. tcp的11种状态 ss -ant -a 表示看所有状态 -n 表示不将ip解析为主机名 -t 表示tcp 1.1. closed状态(客户端、服务端) 客户端发起建立连接前的状态服务端启动服务前的状态 1.2. listen状态(服务端) 服务端软件运行的时候状…...
前端(vue)学习笔记(CLASS 7):vuex
vuex概述 vuex是一个vue的状态管理工具,状态就是数据 大白话:vuex是一个插件,可以帮我们管理vue通用的数据(多组件共享的数据) 场景 1、某个状态在很多个组件来使用(个人信息) 2、多个组件…...

美业破局:AI智能体如何用数据重塑战略决策(5/6)
摘要:文章深入剖析美业现状与挑战,指出其市场规模庞大但竞争激烈,面临获客难、成本高、服务标准化缺失等问题。随后阐述 AI 智能体与数据驱动决策的概念,强调其在美业管理中的重要性。接着详细说明 AI 智能体在美业数据收集、整理…...

【NLP中向量化方式】序号化,亚编码,词袋法等
1.序号化 将单词按照词典排序,给定从0或者1或者2开始的序号即可,一般情况有几 个特征的单词: PAD表示填充字符,UNK表示未知字符 在这个例子中,我们可以看到我们分别将3个文本分为了4个token,每个token用左侧的词典表示…...

行为设计模式之Command (命令)
行为设计模式之Command (命令) 前言: 需要发出请求的对象(调用者)和接收并执行请求的对象(执行者)之间没有直接依赖关系时。比如遥控器 每个按钮绑定一个command对象,这个Command对…...

力扣面试150题--克隆图
Day 61 题目描述 思路 /* // Definition for a Node. class Node {public int val;public List<Node> neighbors;public Node() {val 0;neighbors new ArrayList<Node>();}public Node(int _val) {val _val;neighbors new ArrayList<Node>();}public N…...