小工具      在线工具  汉语词典  css  js  c++  java

Mysql 中 RC、RR隔离级别的原理及区别

Java,mysql,数据库,java 额外说明

收录于:42天前

今天分享一下mysql中RC和RR隔离级别的原理和区别:

1、首先介绍一下MySQL的四种隔离级别:

1)未提交读(READ UNCOMMITED)脏读

2)已提交读(READ COMMITED)缩写(RC)不可重复读

3)可重复读(REPEATABLE READ)缩写(RR)--------mysql默认隔离级别

4)可串行化(SERIALIZABLE)
 

2、实验对比RR和RC的区别:使用mysql 5.6以后的版本

1、实验1 ,使用mysql的默认隔离级别RR,启动A、B两个事务对比,阿拉伯数字递增代表事务执行的时间顺序,比如 1,2,3,4.......,模拟数据库执行(前提是数据库有两条数据),结果如下图:

分析,当执行A事务执行3时,生成了视图Read View。 commit之前的后续查询都是该版本的数据(执行7时可以见证)。标准快照读取,读取视图在提交后删除。

2.实验2,使用mysql,设置隔离级别为RC,启动两个事务A和B进行比较,递增的阿拉伯数字代表事务执行的时间顺序,如1,2,3,4...,模拟数据库执行(假设数据库有两条数据),结果如下:

根据分析,两个实验的主要区别在于执行7时结果不同,现象是A可以读取其他事务已经提交的数据。原因是在RC级别,执行当前的SQL会生成最新的Read View,commit后该Read View被删除。

另外,更新一条数据的操作也可以演示这种效果! ! !

3. Read View生成时机的不同导致RC和RR级别的快照读取结果不同:

1)、在RR级别下的某个事务的对某条记录的第一次快照读会创建一个快照即Read View将当前系统活跃的其他事务记录起来,此后调用快照读的时候,还是使用的是同一个Read View,
   所以只要当前事务在其他事务提交更新之前使用过快照读,那么之后的快照读使用都是同一个Read View,所以对之后的修改不可见。
2)、在RR级别下,快照读生成ReadView时,Read View会记录此时所有其他活跃事务的快照,这些事务的修改对于当前事务都不可见的, 而早于Read View创建的事务所做的修改均是可见。
3)、在RC级别下,事务中,每次快照读都会新生成一个快照和Read View,这就是我们在RC级别下的事务中可以看到别的事务提交的更新的原因。

总结∶在RC隔离级别下,是每个快照读都会生成并获取最新的Read View,而在RR隔离级别下,则是同一个事务中的第一个快照读才会创建Read View,之后的快照读获取的都是同一个Read View。
 

原文链接:https://blog.csdn.net/nandao158/article/details/116005036

. . .

相关推荐

额外说明

你真的了解逃逸分析(Escape Analysis)么?

什么是逃逸? 逃逸是指在某个方法之内创建的对象,除了在方法体之内被引用之外,还在方法体之外被其它变量引用到;这样带来的后果是在该方法执行完毕之后,该方法中创建的对象将无法被GC回收,由于其被其它变量引用。正常的方法调用中,方法体中创建的对象将在执行完毕之

额外说明

ES6中Generator函数

1.Generator介绍 声明:Generator函数是ES6提供的一种异步编程的解决方案,可以看成一个状态机,封装了多个内部状态,执行Generator函数会返回一个遍历器对象,所以也是遍历器对象生成函数。 Generator函数也是一个普通函数,但

额外说明

工资「喂饱肚子」,副业「养活灵魂」!职场人的生存之道

文章目录 工资:生计的基础 1. 收入局限性 2. 缺乏多样性 3. 有限的时间投入 副业:充实生活的机会 1. 增加收入 2. 提升技能 3. 追求兴趣 4. 增强创造力 5. 实现梦想 如何找到适合的副业? 1. 确定兴趣和技能 2. 市场需求 3.

额外说明

全网详解如何设计数据库的ER图,即实体关系图

目录 1. E-R图的概念 1.1 什么是E-R图 1.2 E-R图中的基本元素 2. 何时画E-R图? 3. E-R图的绘图规范 4. E-R图的绘制流程 绘图前先充分理解这类图形,回答它是什么,具有哪些绘图规范,最后才是怎么画。 1. E-R图的概念

额外说明

8. 原子操作类

Atomic 翻译成中文是原子的意思。在化学上,我们知道原子是构成一般物质的最小单位,在化学反应中是不可分割的。在我们这里 Atomic 是指一个操作是不可中断的。即使是在多个线程一起执行的时候,一个操作一旦开始,就不会被其他线程干扰。 8.1 基本类型

额外说明

prize_p1

文章目录 解题过程 代码审计 思路 问题解决 数组绕过preg_match __destruct的触发 修改phar文件以及签名 phar://支持的后缀(其他方法) 题解 方法一(数组绕过) 方法二(gzip绕过) 解题过程 源代码 <META ht

额外说明

MVC架构在Asp.net中的应用和实现

MVC架构在Asp.net中的应用和实现 摘要:本文主要论述了MVC架构的原理、优缺点以及MVC所能为Web应用带来的好处。并以“成都市信息化资产管理系统”框架设计为例,详细介绍其在Asp.net环境下的具体实现。旨在帮助Web设计开发者更好的了解和掌握

额外说明

【Python】Python 实战:实现前端、后端管理系统部署

目录 一、前言 二、使用 Django (1)安装 Django (2)创建 Django 项目 (3)创建 Django 应用

额外说明

Windows系统目录itss.dll文件缺少的问题解决办法

其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个itss.dll文件(挑选合

额外说明

wordpress生成静态_如何在WordPress中添加简单的用户密码生成器

WordPress 生成静态 Using strong passwords is essential when it comes to WordPress security. Often we see that users use extremely e

ads via 小工具