MVCC:多版本并发控制案例分析(二)

2023-09-19 01:07:53

(笔记总结自b站马士兵教育课程)

本文主要分析readview的案例。

一、简介

readview:表示事务进行快照读操作的时候产生的读视图,在该事务进行快照读的那一刻会生成一个系统当前的快照,但是此时的快照不是数据的快照,而是事务相关信息的快照。

trx_listreadview生成时刻当前系统活跃的事务id
up_limit_id活跃列表中事务id最小的值
low_limit_id系统尚未分配的下一个事务的id

二、基本案例 

首先介绍可见性算法:

①首先比较DB_TRX_ID<up_limit_id,如果小于,则当前事务能看到DB_TRX_ID所在的记录,如果大于等于进入下一个判断。

②接下来判断DB_TRX_ID>=low_limit_id,如果大于等于则代表DB_TRX_ID所在的记录在readview生成后才出现的,那么对于当前事务肯定不可见,如果小于,则进入下一步判断。

③判断DB_TRX_ID是否在活跃事务中,如果在,则代表在readview生成时刻,这个事务还是活跃状态,还没有commit,修改的数据,当前事务也是看不到,如果不在,则说明这个事务在readview生成之前就已经开始commit,那么修改的结果也是能够看到的。

基本案例分析:

时刻事务1事务2事务3
t1begin;begin;begin;
t2

update;

commit;

t3select;

针对t3时刻事务1的select操作的readview快照:

trx_list1,3
up_limit_id1
low_limit_id4
DB_TRX_ID2

我们对此案例进行可见性算法分析:

①因为DB_TRX_ID>up_limit_id,所以进入下一步判断。

②因为DB_TRX_ID<low_limit_id,所以进入下一步判断。

③DB_TRX_ID不在trx_list活跃事务中,所以可读。

综上,事务1的select操作可以读到更新之后的结果值。

三、综合案例

时刻事务1事务2事务3
t1begin;begin;begin;
t2*select;

select;

t3

update;

commit;

t4**select;

我们首先分析*select的readview快照:

trx_list1,2,3
up_limit_id1
low_limit_id4
DB_TRX_ID0

可见性算法分析结果:可读。

我们再分析 **select的readview快照:

trx_list1,3
up_limit_id1
low_limit_id4
DB_TRX_ID2

可见性算法分析结果:可读。

但是实验结果是不可读的,其实这里**select沿用了上一次的*select产生的readview快照,但是DB_TRX_ID是新生成的:

trx_list1,2,3
up_limit_id1
low_limit_id4
DB_TRX_ID2

 可见性算法分析结果:不可读。这样就和实验结果一致了。

四、关于隔离级别

不可重复读:在同一个事务中,两次相同的操作读取的数据是不一样的。

RC:读已提交。

RR:重复读。

在RC隔离级别的时候,每一次进行快照读都会生成新的readview。上述案例我们可以发现存在不可重复读的问题。

在RR隔离级别的时候,只有在第一次进行快照读的时候才会生成readview,之后的快照读都会沿用之前的readview,不会重新生成。上述案例我们可以发现解决了不可重复读的问题。

两个隔离级别的区别点在于生成readview的时机不同。

更多推荐

用动态ip登录账号的风险高不高?

使用动态ip登录账号在一定程度上提供了额外的安全保障和匿名性,但与此同时也存在一些风险和风控挑战。本文将解密使用动态ip登录账号的真相,明确安全与风险的并存之道。1、增强隐私保护:使用动态ip登录账号可以隐藏您的真实IP地址,增强个人隐私保护。这使得恶意ddos者难以追踪您的真实身份和位置,为账号安全提供一定的保障。对

第三天:实现网络编程基于tcp/udp协议在Ubuntu与gec6818开发板之间双向通信

互联网地址每一台设备接入互联网后,都会举报一个唯一的地址编号IP地址INTERNET地址internet地址:它是协议上的一个逻辑地址目前来说,我们主要的IP地址有两类IPV4IPV6IPV4其实就是使用一个32bit整数作为IPIPV6其实就是使用一个128bit整数作为IPipv410101100000000100

腾讯视频共享设备ip会不会出现错误

腾讯视频共享设备功能为用户提供了方便的多屏互动体验,然而在使用该功能时,一些用户可能会遇到IP地址错误的问题。IP地址错误可能导致共享设备无法正常连接或通信。本文旨在对腾讯视频共享设备IP错误问题进行分析和解答,帮助读者更好地理解可能引起此类问题的原因,并提供一些解决方法。下面虎观代理小二二将具体介绍一下在使用腾讯视频

【计算机网络】传输层协议——TCP(中)

文章目录1.三次握手三次握手的本质是建立链接,什么是链接?整体过程三次握手过程中报文丢失问题为什么2次握手不可以?为什么要三次握手?2.四次挥手整体过程为什么要等待2MSL3.流量控制4.滑动窗口共识滑动窗口的一般情况理解滑动窗口滑动窗口的特殊情况1.三次握手SYN:是一个连接请求的报文(三次握手),发送的是TCP报头

IP风险查询:抵御DDoS攻击和CC攻击的关键一步

随着互联网的普及,网络攻击变得越来越普遍和复杂,对企业和个人的网络安全构成了重大威胁。其中,DDoS(分布式拒绝服务)攻击和CC(网络连接)攻击是两种常见且具有破坏性的攻击类型,它们可以对网络基础设施和在线业务造成重大损害。为了抵御这些攻击,IP风险查询变得至关重要。DDoS攻击简介:DDoS攻击旨在通过同时发送大量网

大事件!请注意!AIGC正在疯狂“污染”学术界

原创|文BFT机器人2023年被称为AIGC元年,大模型也成为重中之重,市场预期其创新性甚至远大于移动互联网。AIGC或进一步解放生产力,帮助企业降本增效,影响并改变着互联网的获取信息和内容产出方式。以ChatGPT为代表的新一代人工智能技术迅猛发展,它以强大的语义理解能力、逻辑推理能力和多轮对话能力快速席卷全球,各类

分布式之消息队列精讲

小A,工作于传统软件行业(某社保局的软件外包公司),每天工作内容就是和产品聊聊需求,改改业务逻辑。再不然就是和运营聊聊天,写几个SQL,生成下报表。又或者接到客服的通知,某某功能故障了,改改数据,然后下班部署上线。每天过的都是这种生活,技术零成长。小B,工作于某国企,虽然能接触到一些中间件技术。然而,他只会订阅/发布消

GAN初识

1.生成对抗网络GAN简介1.1生成器G(Z)接受随机噪声Z作为输入生成仿品,并训练自己去欺骗判别器D,让D以为G(Z)产生的任何数据都是真实的。1.2判别器D(Y)可以基于真品和仿品来判断仿造品的仿真程度,通常值越靠近0表示越真实(靠近1表示仿造)。其目标是:使每个真实数据分布中的图像的D(Y)值最大化,并使真实数据

语义噪声的解释

《RobustSemanticCommunicationsAgainstSemanticNoise》定义语义噪声是一种导致误解语义信息和解码错误的噪声。它导致传输的语义符号和接收到的语义符号之间存在差异,在语义编码、数据传输和语义解码阶段都可能被引入[1]分类不同源(文本和图像等)产生语义噪声的原因是不同的:文本文本中

时序预测 | MATLAB实现POA-CNN-BiLSTM鹈鹕算法优化卷积双向长短期记忆神经网络时间序列预测

时序预测|MATLAB实现POA-CNN-BiLSTM鹈鹕算法优化卷积双向长短期记忆神经网络时间序列预测目录时序预测|MATLAB实现POA-CNN-BiLSTM鹈鹕算法优化卷积双向长短期记忆神经网络时间序列预测预测效果基本介绍程序设计参考资料预测效果基本介绍MATLAB实现POA-CNN-BiLSTM鹈鹕算法优化卷积

Android Studio插件版本与Gradle 版本对应关系

关于作者:CSDN内容合伙人、技术专家,从零开始做日活千万级APP。专注于分享各领域原创系列文章,擅长java后端、移动开发、商业变现、人工智能等,希望大家多多支持。目录一、导读二、概览三、Gradle各版本对应关系3.1Gradle版本3.2插件版本3.3AndroidGradle插件和AndroidStudio兼容

热文推荐