MVCC(Multiversion concurrency control)
情景模拟:
在高并发的前提下,一定要注意这个前提。
事务L1修改某表中D的key值,还未提交;
事务L2同样也修改D的key值,提交;然后L1提交。
发生了什么?
L1从D读取key:123对应的值100
L2从D读取key:123对应的100
L1对值增加1,将key:123更新为100 + 1
L2对值增加2,将key:123更新为100 + 2
如果L1和L2串行执行,key:123对应的值将为103,但上面并发执行中L1的执行效果完全被L2所覆盖,实际key:123所对应的值变成了102。就因为L1事务没提交呢,L2又来了。
那如何处理呢?
方法一:
加锁呗。前边不都是在说这个锁的问题呢,把他加写锁,等L1执行完再执行L2。可以是可以,但是发生了排队,并发下降了。这是一种悲观一般把基于锁的并发控制机称成为悲观机制。
方法二:
为了实现可串行化,同时避免锁机制存在的各种问题,我们可以采用基于多版本并发控制(Multiversion concurrency control,MVCC)思想的无锁并发机制,终于把要说的引出来了!人们一般把基于锁的并发控制机称成为悲观机制(悲观锁),而把MVCC等机制称为乐观机制(乐观锁)。加入版本号的一个机制,由D维护该版本号,每次数据有更新就增加版本号,通过版本号来更加高效的管理事务一致性与高并发的问题。
因为锁机制是一种预防性的,读会阻塞写,写也会阻塞读,当锁定粒度较大,时间较长是并发性能就不会太好;
而MVCC是一种后验性的,读不阻塞写,写也不阻塞读,等到提交的时候才检验是否有冲突,由于没有锁,所以读写不会相互阻塞,从而大大提升了并发性能。
Mysql-各种锁区分与MVCC的详解-mysql教程-PHP中文网mysql的锁貌似有很多啊,查了大部分资料,什么表锁,行锁,页锁共享锁,排他锁,意向锁,读锁,写锁悲观锁,乐观锁。。我去,真想问一句,有没有 金锁?我还范冰冰呢。。。哎呀怎么感觉好乱啊。那么把它好好整理总结下吧。后边还有对在innodb下的mvcc理解与举例,简单易懂了解下。表/行/页-锁:表级锁(table-level locking):Mhttps://www.php.cn/mysql-tutorials-354511.html
MVCC(Multiversion concurrency control)相关推荐
- Mybatis 之MVCC (Multi-Version Concurrency Control)
1. mvcc一句话介绍:mvcc, 多版本并发控制.只在可重复读(RR)和读已提交(RC)两种事务隔离机制下才有效.是数据库引擎(InnoDB)层面实现的,用来处理写冲突,提高性能访问. 2. 为什 ...
- 图说论文《An Empirical Evaluation of In-Memory Multi-Version Concurrency Control》
本文从< An Empirical Evaluation of In-Memory Multi-Version Concurrency Control>摘取部分图片,来介绍 MVCC. 该 ...
- Staring into the Abyss: An Evaluation of Concurrency Control with One Thousand Cores 论文阅读笔记
Staring into the Abyss: An Evaluation of Concurrency Control with One Thousand Cores 论文阅读笔记 Concurre ...
- 分布式事务2PC论文翻译(Concurrency Control and Recovery in Database Systems )
作者:Philip A. Bernstein, Vassos Hadzilacos, Nathan Goodman. 1987 原文:Concurrency Control and Recovery ...
- MySQL InnoDB MMCC**Mutil-Version Concurrency Control)
MySQL InnoDB MMCCMutil-Version Concurrency Control),就是多版本并发控制 大概意思就是加入版本号参数,乐观锁实现原理
- 数据库系统原理 15章 Concurrency Control
Lock-Based Protocols 锁协议是用来进行并发控制的协议.有两种锁:排他锁and共享锁.A lock is a mechanism to control concurrent acce ...
- MVCC(Multi-version Cocurrent Control)
MVCC相比2PC是一种更简单有效的分布式事务解决方案. 假设一种场景,一个分布式事务在A,B两个节点更新数据,要么同时成功,要么同时失败. MVCC 中,为每个事务分配一个递增的事务编号,有一个中心 ...
- 浅析Postgres中的并发控制(Concurrency Control)与事务特性(上)
转载:https://www.cnblogs.com/flying-tiger/p/9567213.html#4121483#undefined PostgreSQL为开发者提供了一组丰富的工具来管理 ...
- CMU Database Systems - Concurrency Control Theory
并发控制是数据库理论里面最难的课题之一 并发控制首先了解一下事务,transaction 定义如下, 其实transaction关键是,要满足ACID属性, 左边的正式的定义,由于的intuitive ...
- P14 Optimistic Concurrency Control 课程观看笔记
FaRM 所有服务器都在一个数据中心,但性能比Spanner高许多. 其中,有一个配置管理器,来决定每个数据分片中哪台服务器是primary,哪台是backup 通过ZooKeeper来帮助实现配置管 ...
最新文章
- Exchange 2016 證書無效如何處理?
- 程序员的核心竞争力究竟是什么?
- 如何在 Microsoft Visual C# .NET 中实现 Microsoft Excel 自动化
- JAVA程序设计----练习题
- 关于MySQL 查询表数据大小的总结
- 宠物合成网站源码_为什么加工宠物食品做不到真正的“清洁”?
- linux系统vnc无法远程桌面,linux下vnc远程桌面连接方法分享
- kindeditor在线html编辑器,kindeditor在线HTML编辑器
- Adobe AIR移动应用中的文本输入
- day16-正则表达式
- 关于微信小程序跳转到H5,然后从H5又跳回微信小程序问题的资料
- Apple 等六大生态系统的崛起
- Linux 系统裁剪笔记 软盘2
- 原生js代码实现图片放大境效果
- 【演讲实录+视频】走近40+世界级AI专家!第三届中国人工智能大会资料分享(直播进行中_不断更新)
- Nacos Committer 张龙:Nacos Sync 的设计原理和规划
- 有效沟通技巧慕课答案
- 圣诞新年酷炫视频制作素材ae模板
- ASSA脚本指令EO之谈
- 硬盘故障案例分享——硬盘丢失及容量丢失
热门文章
- php如何判断是否为json数据(格式)
- JDK+TOMCAT+MYSQL图文安装指南(一)
- redhat 替换centos yum源
- Linux的 7个运行级别
- AtCoder Regular Contest 102 (ARC102) E - Stop. Otherwise... 排列组合
- [Android]RapidFloatingActionButton框架正式出炉
- hdu 4005 The war
- 2000条你应知的WPF小姿势 基础篇57-62 依赖属性进阶
- 拓端tecdat|R语言投资组合优化求解器:条件约束最优化、非线性规划求解
- smale学习之数学表达式(day1)