可以认为MVCC是行级锁的一个变种,但是它在很多情况下避免了加锁操作,因此开销更低。

  虽然实现机制有所不同,但大都实现了非阻塞的读操作,写操作也只锁定必要的行。

  MVCC的实现是通过保存数据在某个时间点的快照来实现的。

  MVCC只在读提交和可重复读这两个隔离级别下工作。

  保存这两个额外的系统版本号,使大多数读操作都可以不用加锁,这样设计使得读数据操作很简单,性能很好,并且也能保证只会读取到符合标准的行,不足之处是每行记录都需要额外的存储空间,需要做更多的行检查工作,以及一些额外的维护工作。

MVCC在RR和RC隔离级别下的区别:

  在RR隔离级别下,一个事务只能读取到事务开始的那个时刻的数据快照,即,别的事务修改并提交的数据在自身没有提交之前一般读取不到(加for update语句的select除外,因为这个语句要对数据加X锁必须读取最新的数据快照)。

  在RC隔离级别下,事务总是读取数据行的最新快照,即会产生不可重复读的问题。

最新文章

  1. const,static,extern 简介
  2. iOS中常用的设计模式
  3. 使用 data-* 属性来嵌入自定义数据
  4. matlab中各种高斯相关函数
  5. ASP.NET面试题总结
  6. Java [Leetcode 258]Add Digits
  7. Linux VIM python 自动补全插件:pydiction
  8. sql update小结
  9. docker 创建本地镜像服务器
  10. 原生js判断css动画结束 css 动画结束的回调函数
  11. Echarts 中国地图(包括china.js文件)
  12. 【转载】Office软件自定义功能区不完全显示修复方法
  13. Sphinx 生成 Windows 帮助文件 (.chm文件)
  14. (2) linux文件系统简介
  15. Lemur编写索引器
  16. 【转】WCF OpenTimeout, CloseTimeout, SendTimeout, ReceiveTimeout
  17. Node10.15.0的安装
  18. [poj1269]Intersecting Lines
  19. Visual Studio中Debug和Release的区别
  20. kettle、Oozie、camus、gobblin

热门文章

  1. Java Map 按Key排序和按Value排序【转】【补】
  2. Docker 入门 第五部分:Stacks
  3. 二、主目录 Makefile 分析(1)
  4. u-boot移植(十)---代码修改---支持nor flash
  5. 51nod1331 狭窄的通道
  6. POJ 1061 青蛙的约会 (扩展欧几里得算法)
  7. Flask最强攻略 - 跟DragonFire学Flask - 第四篇 Flask 中的模板语言 Jinja2 及 render_template 的深度用法
  8. Node.js的基本操作(使用Vue前必学)
  9. D - Laying Cables Gym - 100971D (单调栈)
  10. ichartjs一分钟快速入门教程