多版本并发控制(MVCC)
2024-09-15 07:46:53
可以认为MVCC是行级锁的一个变种,但是它在很多情况下避免了加锁操作,因此开销更低。
虽然实现机制有所不同,但大都实现了非阻塞的读操作,写操作也只锁定必要的行。
MVCC的实现是通过保存数据在某个时间点的快照来实现的。
MVCC只在读提交和可重复读这两个隔离级别下工作。
保存这两个额外的系统版本号,使大多数读操作都可以不用加锁,这样设计使得读数据操作很简单,性能很好,并且也能保证只会读取到符合标准的行,不足之处是每行记录都需要额外的存储空间,需要做更多的行检查工作,以及一些额外的维护工作。
MVCC在RR和RC隔离级别下的区别:
在RR隔离级别下,一个事务只能读取到事务开始的那个时刻的数据快照,即,别的事务修改并提交的数据在自身没有提交之前一般读取不到(加for update语句的select除外,因为这个语句要对数据加X锁必须读取最新的数据快照)。
在RC隔离级别下,事务总是读取数据行的最新快照,即会产生不可重复读的问题。
最新文章
- const,static,extern 简介
- iOS中常用的设计模式
- 使用 data-* 属性来嵌入自定义数据
- matlab中各种高斯相关函数
- ASP.NET面试题总结
- Java [Leetcode 258]Add Digits
- Linux VIM python 自动补全插件:pydiction
- sql update小结
- docker 创建本地镜像服务器
- 原生js判断css动画结束 css 动画结束的回调函数
- Echarts 中国地图(包括china.js文件)
- 【转载】Office软件自定义功能区不完全显示修复方法
- Sphinx 生成 Windows 帮助文件 (.chm文件)
- (2) linux文件系统简介
- Lemur编写索引器
- 【转】WCF OpenTimeout, CloseTimeout, SendTimeout, ReceiveTimeout
- Node10.15.0的安装
- [poj1269]Intersecting Lines
- Visual Studio中Debug和Release的区别
- kettle、Oozie、camus、gobblin
热门文章
- Java Map 按Key排序和按Value排序【转】【补】
- Docker 入门 第五部分:Stacks
- 二、主目录 Makefile 分析(1)
- u-boot移植(十)---代码修改---支持nor flash
- 51nod1331 狭窄的通道
- POJ 1061 青蛙的约会 (扩展欧几里得算法)
- Flask最强攻略 - 跟DragonFire学Flask - 第四篇 Flask 中的模板语言 Jinja2 及 render_template 的深度用法
- Node.js的基本操作(使用Vue前必学)
- D - Laying Cables Gym - 100971D (单调栈)
- ichartjs一分钟快速入门教程