当前位置:网站首页>MySQL-多版本并发控制
MySQL-多版本并发控制
2022-08-02 07:00:00 【kk_lina】
一、概念
mvcc通过数据行的多个版本管理来实现数据库的并发控制。这项技术使innoDB的事务隔离级别下执行一致性读操作有了保证。就是为了查询一些正在被另一个事务更新的行,并且可以看到它们被更新之前的值,这样在做查询的时候就不用等待另一个事务释放锁。
二、快照读与当前读
mvcc在MySQL InnoDB中实现主要是为了提高数据库的并发性能,更好的去处理读-写冲突,做到即使有读写冲突也可以不加锁,非阻塞性并发读,这个读是指快照读,不是当前读。当前读实际上是一种加锁操作,悲观锁的实现,mvcc本质是采用乐观锁思想的实现。
1、快照读(一致性读)
读取的是快照数据,不加锁的简单的select都属于快照读,可能并不是最新的数据,可能是历史版本,前提是隔离级别不是串行级别的,串行级别下的快照读可能会退化成当前读。
2、当前读
读取的是当前版本,读取时需要加锁保证某一个事务下数据不会被其他事务所修改。
三、MVCC实现原理之ReadView
1、什么是ReadView
事务用来查询存在undo log里的历史快照,提供行的可见性,innodb为每个事务构造一个数组,用来记录并维护系统当前活跃事务的ID(启动但还未提交)
2、设计思路
- 使用 READ UNCOMMITED隔离级别事务,可以读到未提交事务,所以使用不上MVCC,所以读取的是最新数据而不需要读取历史数据;
- 使用 SERIALIZABLE隔离级别的事务,innodb规定使用加锁的方式来访问记录;
- 使用READ COMMITTED和REPEATABLE READ隔离级别的事务,必须保证读到已经提交的事务修改过的记录。加入另一个事务已经修改了记录但是尚未提交,是不能直接读取最新版本的记录的,核心问题就是需要判断一下版本链中的哪个版本是当前事务可见的,这是ReadView要解决的主要问题。
- cread_trx_id:创建这个read view的事务id;
- trx_ids:表示在生成read view时当前系统中活跃的读写事务的事务id列表;
- up_limit_id:活跃的事务中最小的事务id;
- low_limit_id:表示生成read view时系统中应该分配给下一个事务的id值。是系统最大的事务id。
边栏推荐
猜你喜欢
![带手续费买卖股票的最大利益[找DP的状态定义到底缺什么?]](/img/14/cd6ed7452230571db2e027f61dbdba.png)
带手续费买卖股票的最大利益[找DP的状态定义到底缺什么?]

Analysis of GCC compiler technology

速看!PMP新考纲、PMBOK第七版解读

regular expression

Facebook社媒营销的5大技巧,迅速提高独立站转化率!

System.Security.SecurityException: 未找到源,但未能搜索某些或全部事件日志。不可 访问的日志: Security

MQ带来的一些问题、及解决方案

Splunk Filed extraction 字段截取

“蔚来杯“2022牛客暑期多校训练营4,签到题NDKHL
![(Part of it is not understood, and the notes are not completed) [Graph Theory] Difference Constraints](/img/e0/385579fc8657db8b175318bd739908.gif)
(Part of it is not understood, and the notes are not completed) [Graph Theory] Difference Constraints
随机推荐
在VMware上安装Metasploitable2
【CNN回归预测】基于matlab卷积神经网络CNN数据回归预测【含Matlab源码 2003期】
使用hutool做本地缓存的工具类
Wuhan 2022 organizing of the high-performance computing added new ecological development of high-performance computing
实验7 MPLS实验
59:第五章:开发admin管理服务:12:MongoDB的使用场景;(非核心数据,数据量比较大的非核心数据,人脸照片等隐私的小文件;)
实例030:回文数
牛客编程题中——需要处理输入较大数的题目
PWA 踩坑 - 第一次加载页面后无法获取CacheStorage某些资源
敏捷、DevOps和嵌入式系统测试
FaceBook社媒营销高效转化技巧分享
Swagger的简单介绍,集成,以及如何在生产环境中关闭swagger,在测试和开发环境中自动打开
张驰课堂:六西格玛培训工具——箱线图
MQ带来的一些问题、及解决方案
CollectionUtil:一个函数式风格的集合工具
SQL执行顺序
企业实训复现指导手册——基于华为ModelArts平台的OpenPose模型的训练和推理、基于关键点数据实现对攀爬和翻越护栏两种行为的识别、并完成在图片中只标注发生行为的人
Connection reset by peer problem analysis
论文阅读 (64):Weakly-supervised Video Anomaly Detection with Robust Temporal Feature Magnitude Learning
LeetCode 2312. 卖木头块