mysql rr 更新失败_RR 级别下 update 操作的是快照读还是当前读?

我们知道在 RR 级别下,重复的 select 操作,读取的值都会是一致的。即便在两次 select 操作的中间,有一个事务 B 修改了值,但是在事务 A 中 select 读取的值还是一致的。

那么如果是 update 操作呢?之前在网上看到一篇博客说 RR 级别下,CAS 操作是没有意义的。因为 version 值在一个事务中都是一致不变的。于是我有了疑惑打算自己来验证一下。

验证想法

RR 级别下 update 操作的是快照读还是当前读?

准备数据

准备了以下简单的表数据结构。

sid

name

sex

version

1

zhangsan

0

0

2

lisi

1

0

验证思路

通过 version 值做 CAS 版本,修改 sex 值。

A 事务先执行,通过 sleep 5 秒延迟最后的 update 操作。

B 事务后执行,通过 sleep 1 秒使得它虽然事务 id 更大,但比 A 事务更早执行完成。

查看 A 事务通过 version 字段 CAS 操作能否修改成功 sex 值。

如果能修改成功即 update 语句 where 条件定位的是快照读,反之则定位的是当前读。

事务脚本

事务 A

事务 A 先执行,事务 id 小

begin;

SELECT version from student where sid = 1;

// 当前获取的version为0

SELECT SLEEP(5);

SELECT version from student where sid = 1;

// 此时获取的version依然为0

update student set sex = 1 , version = version +1 where sid = 1 and version = 0;

// 修改行数为0,修改操作失败,说明version已经不是0了,

commit;

事务 B

事务 B 后执行,事务 id 大

begin;

SELECT version from student where sid = 1;

// 当前获取的version为0

SELECT SLEEP(1);

SELECT version from student where sid = 1;

// 此时获取的version依然为0

update student set sex = 2 , version = version +1 where sid = 1 and version = 0;

// 修改成功,此时当前version为1

commit;

验证结果

事务 A 的 update 操作失败,说明 update 中的 where 条件定位的记录是当前读而非快照读。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/527635.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

json模拟数据怎么用_在使用axios获取自己模拟的json数据是踩到的坑

最近在使用Vue仿写一个网易云音乐的单页面应用,当页面布局什么的写完后,然后就准备用axios获取后台数据渲染页面了,当然,我自己写的,并没有后台,所以,我就自己写json文件,然后弄prox…

python中数据类型不同运算不同_Python的基本数据类型与运算

Python的基本数据类型:1.number数字整型(整数):python可以处理任意大小的整数包括正整数与负整数浮点型(小数):在Python中表示浮点数的时候回存在一些误差复数:abj2.str字符串类型定义:使用单引号或者双引号括起来的任意文本,我们称之为字符串.3.bool(布尔)类型取值只有Ture和F…

ubuntu 自动加载ko_linux驱动模块开机自动加载,以及应用程序开机自启动

http://blog.csdn.net/qq_29350001/article/details/51788635第一种方法:相对来说简单将测试程序放在/bin底下,然后用vi编辑/etc/init.d/rcS,加上/bin/应用程序名 &,加上&表示后台运行这两个功能的实现都是通过设置启动脚本来实现的。…

mysql架构深入_mysql性能优化2:深入认识mysql体系架构

前言本文将重点梳理mysql的体系架构,便于了解mysql的实现原理。Mysql体系结构Client Connectors 接入方 支持协议很多Management Serveices & Utilities 系统管理和控制工具,mysqldump、 mysql复制集群、分区管理等Connection Pool 连接池&#xff1…

mysql租车管理系统_基于java实现租车管理系统

概述基于java swing JFrame 的图书馆管理系统,租车,还车,管理员管理用户,付款等。部分代码public class Login extends JFrame {private static final long serialVersionUID 1L;/*** 登录窗体*/public Login() {setDefaultClo…

树莓派 pip安装mysql_树莓派 pip 手动安装

在 /etc/pip.conf 添加如下内容,启用源[global]extra-index-urlhttps://www.piwheels.org/simple下载后 pip install **.whl 安装国内源:新版ubuntu要求使用https源,要注意。清华:https://pypi.tuna.tsinghua.edu.cn/simple阿里云…

6阶群的非平凡子群_设群G=Z 16 , 求出其全部非平凡正规子群和相应的商群._学小易找答案...

【计算题】求出三次对称群 的全部正规子群和商群。【单选题】19、如下图所示,已知主、俯视图,正确的俯视图为( )【单选题】7、一平面在W面上的投影是一条平行于OZ轴的直线,在H面上的投影是一条平行于OX轴的直线,该直线是( )。【单选题】1、已知点N(15,22,10),下列说法错误的是(…

fastjson 不转某些字段_全面总结Fastjson过滤字段、排除字段的5种方法(含示例)...

1.通过注解指定不需要序列化的字段在不需要序列化的字段,添加JSONField(serialize false)注解可进行排除。public class DontSerializeAnnotation{JSONField(serialize false)private Long id;private String name;public Long getId(){return id;}public void se…

qpython3h安装numpy_怎么装不上numpy?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼还是不行:(------------------------------------------------------------ /data/data/com.hipipal.qpyplus/files/bin/pip run on Mon Sep 21 11:04:21 2015 Downloading/unpacking numpy Running setup.py egg_info …

java随机整数_java如何产生1-8的整数随机数?

展开全部(int)(Math.random()*8)1或者Random r new Random(100);System.out.println(r.nextInt(8)1);Java产生随机数的两种方式62616964757a686964616fe58685e5aeb9313333656462611、通过Math.random()方法返回一个0到1之间的double值。2、通过Random类来产生一个随机数&#x…

java 1的阶乘之和_1-20的阶乘之和(java)

import java.math.BigInteger;public class Factorial {//2)求1&#xff01;2&#xff01;……20&#xff01;public static void main(String[] args){BigInteger sumBigInteger.ZERO;for(BigInteger iBigInteger.ONE;i.intValue()<20;){ii.add(BigInteger.ONE);sumsum.add…

java 音频解码_java视频音频解码-封装xuggle-实现多种视频编码格式解码扩展

手头做一个视频相关项目&#xff0c;但是客户发来的测试视频(avi格式) 现有组件不能解码。现有视频解码组件方案有基于JMF和opencv Jni调用。远远不能满足目前市面上玲琅满目的各种视频编码标准。进行检索 找到xuggler官方主页&#xff1a;http://www.xuggle.com/xuggler 对5.…

java 二叉树特点_二叉树的Java实现及特点总结

二叉树是一种非常重要的数据结构&#xff0c;它同时具有数组和链表各自的特点&#xff1a;它可以像数组一样快速查找&#xff0c;也可以像链表一样快速添加。但是他也有自己的缺点&#xff1a;删除操作复杂。我们先介绍一些关于二叉树的概念名词。二叉树&#xff1a;是每个结点…

java中session的作用_java中session的工作原理是什么?和Cookies有何区别?

现在大家学习的东西和以前大不相同了&#xff0c;越来越多的人倾向于去学习高新技术以获得更好的发展。java是很多人的第一选择。java中的知识还是很多的&#xff0c;今天就来为大家介绍一下。首先来说一下java中session的工作原理是什么?session的工作原理是客户端登录完成之…

java 大数四则运算_大数四则运算java(转)

1 //大数的四则运算2 #include 3 #include 4 #include 5 using namespace std;67 classBIGINTEGEROPERATIONS8 {9 private:10 static intCOMPARE(string number1, string number2)11 {12 intj;1314 int length1 number1.size();15 int length2 number2.size();1617 if(number1.…

http参数自动转换java接口参数设置_Springmvc请求参数类型转换器及原生api代码实例...

一、springmvc的xml配置文件xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xmlns:context"http://www.springframework.org/schema/context"xmlns:mvc"http://www.springframework.org/schema/mvc"xsi:schemaLocation"http://www.s…

java构建json_Java构造和解析Json数据的两种方法详解一

在www.json.org上公布了很多JAVA下的json构造和解析工具&#xff0c;其中org.json和json-lib比较简单&#xff0c;两者使用上差不多但还是有些区别。下面首先介绍用json-lib构造和解析Json数据的方法示例。用org.son构造和解析Json数据的方法详解请参见我下一篇博文&#xff1a…

python perl lisp,是否可能像python中的perl的lvalue或lisp的setf一样?

In lisp you can say:(setf (aref a 1) 5)In perl you can say:substr( $string, $start, $stop ) ~ s/a/b/gIs it possible something like this in python? I mean is it possible to use function result as a lvalue (as a target for assignment operation)?解决方案No.…

java final被覆盖_java中的final的使用

1、final类不能被继承&#xff0c;因此final类的成员方法没有机会被覆盖&#xff0c;默认都是final的。在设计类时候&#xff0c;如果这个类不需要有子类&#xff0c;类的实现细节不允许改变&#xff0c;并且确信这个类不会再被扩展&#xff0c;那么就设计为final类。(什么时候…

java jaxb注解xmlnull_java – 将空值表示为xml jaxb中的空元素

我强烈建议使用不存在节点或xsi&#xff1a;nil “true”属性来表示null.这最适用于模式验证(即< age />或< age>< / age>不是xsd&#xff1a;int类型的有效元素.但是,如果您不能在这里完成您的用例&#xff1a;标准JAXB行为import javax.xml.bind.annotatio…