情景模拟:

在高并发的前提下,一定要注意这个前提。

事务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)相关推荐

  1. Mybatis 之MVCC (Multi-Version Concurrency Control)

    1. mvcc一句话介绍:mvcc, 多版本并发控制.只在可重复读(RR)和读已提交(RC)两种事务隔离机制下才有效.是数据库引擎(InnoDB)层面实现的,用来处理写冲突,提高性能访问. 2. 为什 ...

  2. 图说论文《An Empirical Evaluation of In-Memory Multi-Version Concurrency Control》

    本文从< An Empirical Evaluation of In-Memory Multi-Version Concurrency Control>摘取部分图片,来介绍 MVCC. 该 ...

  3. 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 ...

  4. 分布式事务2PC论文翻译(Concurrency Control and Recovery in Database Systems )

    作者:Philip A. Bernstein, Vassos Hadzilacos, Nathan Goodman. 1987 原文:Concurrency Control and Recovery ...

  5. MySQL InnoDB MMCC**Mutil-Version Concurrency Control)

    MySQL InnoDB MMCCMutil-Version Concurrency Control),就是多版本并发控制 大概意思就是加入版本号参数,乐观锁实现原理

  6. 数据库系统原理 15章 Concurrency Control

    Lock-Based Protocols 锁协议是用来进行并发控制的协议.有两种锁:排他锁and共享锁.A lock is a mechanism to control concurrent acce ...

  7. MVCC(Multi-version Cocurrent Control)

    MVCC相比2PC是一种更简单有效的分布式事务解决方案. 假设一种场景,一个分布式事务在A,B两个节点更新数据,要么同时成功,要么同时失败. MVCC 中,为每个事务分配一个递增的事务编号,有一个中心 ...

  8. 浅析Postgres中的并发控制(Concurrency Control)与事务特性(上)

    转载:https://www.cnblogs.com/flying-tiger/p/9567213.html#4121483#undefined PostgreSQL为开发者提供了一组丰富的工具来管理 ...

  9. CMU Database Systems - Concurrency Control Theory

    并发控制是数据库理论里面最难的课题之一 并发控制首先了解一下事务,transaction 定义如下, 其实transaction关键是,要满足ACID属性, 左边的正式的定义,由于的intuitive ...

  10. P14 Optimistic Concurrency Control 课程观看笔记

    FaRM 所有服务器都在一个数据中心,但性能比Spanner高许多. 其中,有一个配置管理器,来决定每个数据分片中哪台服务器是primary,哪台是backup 通过ZooKeeper来帮助实现配置管 ...

最新文章

  1. Exchange 2016 證書無效如何處理?
  2. 程序员的核心竞争力究竟是什么?
  3. 如何在 Microsoft Visual C# .NET 中实现 Microsoft Excel 自动化
  4. JAVA程序设计----练习题
  5. 关于MySQL 查询表数据大小的总结
  6. 宠物合成网站源码_为什么加工宠物食品做不到真正的“清洁”?
  7. linux系统vnc无法远程桌面,linux下vnc远程桌面连接方法分享
  8. kindeditor在线html编辑器,kindeditor在线HTML编辑器
  9. Adobe AIR移动应用中的文本输入
  10. day16-正则表达式
  11. 关于微信小程序跳转到H5,然后从H5又跳回微信小程序问题的资料
  12. Apple 等六大生态系统的崛起
  13. Linux 系统裁剪笔记 软盘2
  14. 原生js代码实现图片放大境效果
  15. 【演讲实录+视频】走近40+世界级AI专家!第三届中国人工智能大会资料分享(直播进行中_不断更新)
  16. Nacos Committer 张龙:Nacos Sync 的设计原理和规划
  17. 有效沟通技巧慕课答案
  18. 圣诞新年酷炫视频制作素材ae模板
  19. ASSA脚本指令EO之谈
  20. 硬盘故障案例分享——硬盘丢失及容量丢失

热门文章

  1. php如何判断是否为json数据(格式)
  2. JDK+TOMCAT+MYSQL图文安装指南(一)
  3. redhat 替换centos yum源
  4. Linux的 7个运行级别
  5. AtCoder Regular Contest 102 (ARC102) E - Stop. Otherwise... 排列组合
  6. [Android]RapidFloatingActionButton框架正式出炉
  7. hdu 4005 The war
  8. 2000条你应知的WPF小姿势 基础篇57-62 依赖属性进阶
  9. 拓端tecdat|R语言投资组合优化求解器:条件约束最优化、非线性规划求解
  10. smale学习之数学表达式(day1)