MySQL之MVVC简介

MySql之MVVC总结 本文主要讲述MVVC的原理。 阅读详情

MySQL之MVVC简介
一丶什么是MVVC?
  MVVC (Multi-Version Concurrency Control) (注:与MVCC相对的,是基于锁的并发控制,Lock-Based Concurrency Control)是一种基于多版本的并发控制协议,只有在InnoDB引擎下存在。MVCC是为了实现事务的隔离性,通过版本号,避免同一数据在不同事务间的竞争,你可以把它当成基于多版本号的一种乐观锁。当然,这种乐观锁只在事务级别未提交锁和已提交锁时才会生效。MVCC最大的好处,相信也是耳熟能详:读不加锁,读写不冲突。在读多写少的OLTP应用中,读写不冲突是非常重要的,极大的增加了系统的并发性能。具体见下面介绍。

二丶MVVC的实现机制
  InnoDB在每行数据都增加两个隐藏字段,一个记录创建的版本号,一个记录删除的版本号。

在多版本并发控制中,为了保证数据操作在多线程过程中,保证事务隔离的机制,降低锁竞争的压力,保证较高的并发量。在每开启一个事务时,会生成一个事务的版本号,被操作的数据会生成一条新的数据行(临时),但是在提交前对其他事务是不可见的,对于数据的更新(包括增删改)操作成功,会将这个版本号更新到数据的行中,事务提交成功,将新的版本号更新到此数据行中,这样保证了每个事务操作的数据,都是互不影响的,也不存在锁的问题。
三丶MVVC下的CRUD
SELECT:
  当隔离级别是REPEATABLE READ时select操作,InnoDB必须每行数据来保证它符合两个条件:
  1、InnoDB必须找到一个行的版本,它至少要和事务的版本一样老(也即它的版本号不大于事务的版本号)。这保证了不管是事务开始之前,或者事务创建时,或者修改了这行数据的时候,这行数据是存在的。
  2、这行数据的删除版本必须是未定义的或者比事务版本要大。这可以保证在事务开始之前这行数据没有被删除。
符合这两个条件的行可能会被当作查询结果而返回。

INSERT:

InnoDB为这个新行记录当前的系统版本号。
DELETE:

InnoDB将当前的系统版本号设置为这一行的删除ID。
UPDATE:

InnoDB会写一个这行数据的新拷贝,这个拷贝的版本为当前的系统版本号。它同时也会将这个版本号写到旧行的删除版本里。

这种额外的记录所带来的结果就是对于大多数查询来说根本就不需要获得一个锁。他们只是简单地以最快的速度来读取数据,确保只选择符合条件的行。这个方案的缺点在于存储引擎必须为每一行存储更多的数据,做更多的检查工作,处理更多的善后操作。
  MVCC只工作在REPEATABLE READ和READ COMMITED隔离级别下。READ UNCOMMITED不是MVCC兼容的,因为查询不能找到适合他们事务版本的行版本;它们每次都只能读到最新的版本。SERIABLABLE也不与MVCC兼容,因为读操作会锁定他们返回的每一行数据。

待整理…

参考地址(各种锁的原理):https://www.jianshu.com/p/59469da035e7

前端开发框架篇--MVVC框架 mvvc框架的介绍 阅读详情

相关推荐

吃透MySQL(九):MVCC多版本并发控制原理

1、MVCC ​ MVCC,全称Multi-Version Concurrency Control,即多版本并发控制。MVCC是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存。 MVCC在MySQL InnoDB中的实现主要是为了提高数据库并发性能,用更好的方式去处理读写冲突,做到即使有读写冲突时,也能做到不加锁,非阻塞并发读。 2、当前读 ​ 像select lock in share mode(共享锁), select for update ; up

吃透Java 2550

MySQL之MVVC简单介绍

1、什么是锁? 一种保护机制,在多线程的情况下,保证操作数据的正确性与一致性 2、锁有哪些分类? 悲观锁、乐观锁、独占锁、共享锁、公平锁、非公平锁、分布式锁、自旋锁 3、谈谈悲观锁乐观锁: 指的是看待并发同步的角度,一般结合数据库将,以MySQL为例,悲观锁主要是表锁,行锁和间隙锁,叶锁,读锁,因为这些锁在被触发时会引起线程阻塞,所以叫悲观锁;而乐观锁其实在MySQL中本身不存在,但是MySQL提供了MVCC的机制,支持乐观锁机制 4、什么是MVCC? 只有在InnoDB引擎下存在,MVCC是.

jenie的专栏 6443

从零搭建:基于Matlab/Simulink与FlightGear的飞行器实时可视化仿真平台

本文详细介绍了如何从零搭建基于Matlab/Simulink与FlightGear的飞行器实时可视化仿真平台。通过环境准备、模型部署、接口配置及联合仿真等步骤,帮助用户快速掌握飞行器仿真的核心技术,实现高效的三维可视化与实时数据交互。

weixin_29100399的博客 517

MySQL的MVCC模式

在早期的数据库中,只有读读之间的操作才可以并发执行,读写,写读,写写操作都要阻塞,这样就会导致MySQL的并发性能极差。采用了MVCC机制后,只有写写之间相互阻塞,其他三种操作都可以并行,这样就可以提高了MySQL的并发性能。

zk25257758的博客 633

用易经智慧看懂人工智能:64卦中的科技密码--当古老智慧遇见未来科技

在人工智能狂飙突进的今天,我们总在追问:这些代码构建的智能究竟会带人类走向何方?或许答案早已藏在《周易》的六十四卦中——这本中华文明的“源代码”,正用一种跨越时空的语言,悄悄解释着最前沿的科技秘密。

weixin_38410320的博客 2081

Stata极简生存分析

1. 导入数据 webuse drugtr,clear *webuse -- Use dataset from Stata website stset,clear *上一行命令导入进来的数据是“生存时间数据”,会比最原始的数据多四列,这一行命令的目的是重置为原始数据,之所以这样做,是为了显示数据处理的全部过程 codebook drug codebook studytime codebook died codebook age *codebook -- Describe data contents 2.

TOP生物信息 2335

mysql取消mvvc机制_MySQL之MVVC简介

MySQL之MVVC简介一丶什么是MVVC?MVVC(Multi-Version Concurrency Control)(注:与MVCC相对的,是基于锁的并发控制,Lock-Based Concurrency Control)是一种基于多版本的并发控制协议,只有在InnoDB引擎下存在。MVCC是为了实现事务的隔离性,通过版本号,避免同一数据在不同事务间的竞争,你可以把它当成基于多版本号的一...

weixin_33585909的博客 186

三极管共集电极放大电路详解:射极跟随器的原理、计算与应用

三极管放大电路是模拟电子技术的基石,常见组态包括共发射极、共基极和共集电极。其中共集电极电路因输入电阻大、输出电阻小、电压增益接近1的特性,常被用作射极跟随器,在信号缓冲、级间隔离和低阻抗负载驱动等场景中发挥关键作用。其核心价值并非电压放大,而是完成阻抗变换,将高内阻信号源转换为低内阻输出,同时保持信号幅值基本不变。理解其静态工作点计算与动态参数推导(如电压增益、输入输出电阻)是设计实用电路的前提。本文结合12V电源下的具体设计实例和仿真验证,梳理了从电路识别、参数计算到工程实践的完整流程,并指出常见设计误

weixin_29193259的博客 366

mv mysql_MySQL之MVVC简介

MySQL之MVVC简介一丶什么是MVVC?MVVC(Multi-Version Concurrency Control)(注:与MVCC相对的,是基于锁的并发控制,Lock-Based Concurrency Control)是一种基于多版本的并发控制协议,只有在InnoDB引擎下存在。MVCC是为了实现事务的隔离性,通过版本号,避免同一数据在不同事务间的竞争,你可以把它当成基于多版本号的一...

weixin_35936869的博客 465

ABAQUS中CDP模型在钢筋混凝土节点低周反复荷载模拟的关键技术解析

本文深入解析了ABAQUS中CDP模型在钢筋混凝土节点低周反复荷载模拟中的关键技术。通过详细介绍CDP模型的核心价值、建模关键技术、滞回曲线优化方法及典型问题排查指南,帮助工程师精准模拟混凝土的拉伸开裂和压缩压碎行为,提升抗震分析效率。文章还提供了实用的工程应用技巧,如快速建模模板和后处理自动化脚本。

weixin_30555125的博客 525

川崎机器人 AS语言基础运动指令表

    功能简介 动作方式 参考坐标系 位置特性 X,Y,Z 角度特性 O,A,T 指令格式(距离单位毫米,时间单位秒,角度单位度 示例1 示例2 运 动 指 令 JMOVE 以关节移动到目标点 关节移动方式 基础坐标系 不受控 伪随机动作 JMOVE 目标点 JMOVE #yd JMOVE put1 LMOVE 以直线移动到目标点 直线移动方式

喜欢自学并分享经验的技术宅 9346

mvvc mysql_MySQL之MVCC简介

MySQL之MVVC简介一丶什么是MVCC?MVCC(Multi-Version Concurrency Control)(注:与MVCC相对的,是基于锁的并发控制,Lock-Based Concurrency Control)是一种基于多版本的并发控制协议,只有在InnoDB引擎下存在。MVCC是为了实现事务的隔离性,通过版本号,避免同一数据在不同事务间的竞争,你可以把它当成基于多版本号的一...

weixin_29499829的博客 267

论文翻译:Automatic Lesson Plan Generation via Large Language Models with Self-critique Prompting

在本文中,我们利用大型语言模型(LLMs)的理解和生成能力来自动生成定制化的课程计划。这解决了传统计划可能无法充分满足不同教学环境和学生群体的特定需求的常见挑战。我们提出了一个新颖的三阶段过程,包括使用检索增强生成(RAG)逐步生成课程计划的每个关键组成部分,通过LLMs进行自我批评,以及随后的细化。我们使用这种方法为小学2至5年级生成了涵盖80多个主题的数学课程计划。邀请了三位经验丰富的教育工作者制定全面的课程计划评估标准,然后使用这些标准将我们的LLM生成的课程计划与同一主题的实际课程计划进行基准比较。

CSPhD-winston的博客 1100

MySQL是如何实现事务的——锁机制、MVVC详解

🌟 前言 🐶 作者简介:大家好,我是周周,目前就职于国内短视频小厂BUG攻城狮一枚。 💻个人主页:程序猿周周 📖专题系列:Java面试总结 🤺 如果文章对你有帮助,记得👍点赞👍、👀关注👀➕👌收藏👌,一键三连哦,你的支持将成为我最大的动力。 文章目录🌟 前言1 事务1.1 事务基本特性1.2 事务并发问题1.3 事务隔离级别2 锁机制2.1 锁分类2.1.1 粒度划分2.1.2 用法划分2.2 锁实现2.2.1 记录锁2.2.2 间隙锁2.2.3 临键锁2.3 意向锁2.3.1 意向锁作用2.3.2 意向

程序猿周周的博客 3497

91、Windows网络配置:动态更新与名称解析全攻略

本文全面解析了Windows XP Professional系统中的网络配置方法,重点介绍了动态更新和名称解析两大核心功能。动态更新部分涵盖DHCP客户端、静态配置客户端、远程访问客户端和多宿主客户端的配置方法,并提供禁用动态更新和编辑Hosts文件的注意事项。名称解析部分详细讲解了NetBIOS名称解析的基础知识、WINS配置方法、B节点广播与Lmhosts文件的使用,以及WINS代理的作用和配置要点。通过操作建议流程图和关键操作步骤回顾,帮助用户快速掌握网络配置的核心技巧,适用于不同网络环境的实际需求。

blue42的博客 232

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Mysql MVVC笔记

什么是MVVC,为什么要用它 在mysql的InnoDB不同事务隔离级别中,MVVC(Multi-Version Concurrency Control)工作在RC(Read Commited)和RR(Repeatable Read)这两种隔离级别中。其实MVVC简单理解,就是通过对每个事务赋予一个唯一的、递增的id来代替对数据行上锁从而减小DBMS的开销**(读不会加锁)**。 举个不是很准确的例子,有两个事务T1,T2,它们的id分别是1,2。由于事务id是递增唯一的,因此可以认为T2在逻辑上是后于T1

qq_34025034的博客 2426

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

MySQL MVVC

什么是MVVC? MVVC (Multi-Version Concurrency Control) (注:与MVCC相对的,是基于锁的并发控制,Lock-Based Concurrency Control)是一种基于多版本的并发控制协议,只有在InnoDB引擎下存在。MVCC是为了实现事务的隔离性,通过版本号,避免同一数据在不同事务间的竞争,你可以把它当成基于多版本号的一种乐观锁。当然,这种乐观锁...

weixin_34334744的博客 476

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

mysql undo mvvc_Mysql MVVC笔记

什么是MVVC,为什么要用它在mysql的InnoDB不同事务隔离级别中,MVVC(Multi-Version Concurrency Control)工作在RC(Read Commited)和RR(Repeatable Read)这两种隔离级别中。其实MVVC简单理解,就是通过对每个事务赋予一个唯一的、递增的id来代替对数据行上锁从而减小DBMS的开销,也就是读不会加锁。举个不是很准确的例子,有...

weixin_28797725的博客 74

谈谈对MVVC理解

综上所述,物理删除(从数据页中真正移除)会在清理阶段(purge)由后台线程异步进行,是为了确保在事务提交后其他事务仍能看到其之前版本的行,这是MySQL InnoDB存储引擎通过MVCC机制支持并发访问和事务隔离的重要体现。MySQL的MVVC机制通过维护数据的历史版本、构建事务视图以及利用可见性判断规则,实现了在高并发场景下对数据的并发访问和事务隔离,减少了锁的竞争,提升了系统性能,特别是在读多写少的环境中效果尤为明显。每当事务对数据行进行修改时,都会创建一个新的版本,并将其加入到版本链中。

qq_42025000的博客 2062

mysql undo mvvc_MySQL之MVVC原理

什么是MVVCMVVC(Multi-Version Concurrency Control)(注:与MVCC相对的,是基于锁的并发控制,Lock-Based Concurrency Control)是一种基于多版本的并发控制协议,只有在InnoDB引擎下存在。MVCC是为了实现事务的隔离性,通过版本号,避免同一数据在不同事务间的竞争,你可以把它当成基于多版本号的一种乐观锁。当然,这种乐观锁只在...

weixin_33946659的博客 256

mysql undo mvvc_MySQL MVVC

什么是MVVCMVVC(Multi-Version Concurrency Control)(注:与MVCC相对的,是基于锁的并发控制,Lock-Based Concurrency Control)是一种基于多版本的并发控制协议,只有在InnoDB引擎下存在。MVCC是为了实现事务的隔离性,通过版本号,避免同一数据在不同事务间的竞争,你可以把它当成基于多版本号的一种乐观锁。当然,这种乐观锁只在...

weixin_39790877的博客 214
上一篇: 写代码实现堆溢出、栈溢出、永久代溢出、直接内存溢出
下一篇: GO GC 垃圾回收机制
牧竹子
博客等级 码龄17年 572粉丝 233原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值