当前位置: 首页 > article >正文

mysql事务脏读 不可重复读 幻读 事务隔离级别关系

看了很多文档,发现针对事务并发执行过程中的数据一致性问题,即脏读、不可重复读、幻读的解释一塌糊涂,这也不能说什么,因为官方SQL标准中的定义也模糊不清。

按照mysql中遵循的事务隔离级别,可以梳理一下其中的关系

隔离级别脏读不可重复读幻读使用到的锁

READ UNCOMMITTED

(读未提交)

READ COMMITTED

(读已提交)

记录锁(行级锁)

REPEATABLE READ

(可重复读,重复读一致

记录锁+间隙锁,俗称Next-Key锁

SERIALIZABLE

(串行化)

普通SELECT语句自动转为SELECT ... FOR SHARE
使用Next-Key锁
写操作加排他锁,当前事务外的其他事务想对数据进行非查询操作会锁定记录

看着隔离级别中的名字定义和数据一致性问题可知,针对的是事务执行过程中查询数据的问题,然而这些问题可能是由于插入、修改、删除导致的。

隔离级别从读未提交到串行化的过程中依次加强。

读未提交是一种无脑做法,就是事务未提交的数据也读取到了,按理来说单个事务执行过程中针对数据的修改当前事务没有提交的话其他事务部应该查询到。

读已提交和可重复读针对的是非活跃状态的事务,即事务已提交的数据,因为底层用到了MVCC技术,使用了innodb中数据行的隐藏数据中的trx_id,MV指的是undo log,CC指的是readview。

从读已提交命名可以得知,只是读取到了事务已提交的数据,至于当前事务在执行过程中针对同一条查询sql涉及到的数据查询多少次返回结果如何不做限制,只有一个标准,只读取事务已提交的数据。这样就会有一个问题,别的事务针对符合查询条件的数据做了修改,那查询到的数据对不上就说不明白了。

可重复读这个比较难理解,从命名上感觉就不太规范,强调的是同一条查询sql涉及到的数据不管查询多少次只返回初次查询的结果,就是咬死了只认初次查询的数据。这里回顾一下命名,应该起名重复读一致。

串行化是最不建议的隔离级别,一般不会用这个。

这样上面的脏读、不可重复读、幻读之间的区别就比较清晰了

数据一致性问题说明
脏读可以读取未提交事务的数据,应该改为未提交读
不可重复度同一条数据在当前事务中多次读取结果可能不一致,应该改为重复读结果不一致
幻读强调的是当前事务在执行范围查询时符合要求的数据在事务执行过程中不能进行insert或delete操作,不然会有新数据或者应该有的数据没了

参看文档

https://dev.mysql.com/doc/refman/8.4/en/innodb-transaction-isolation-levels.html

https://dev.mysql.com/doc/refman/8.4/en/innodb-locking.html

https://blog.csdn.net/minterdata/article/details/133084453

相关文章:

mysql事务脏读 不可重复读 幻读 事务隔离级别关系

看了很多文档,发现针对事务并发执行过程中的数据一致性问题,即脏读、不可重复读、幻读的解释一塌糊涂,这也不能说什么,因为官方SQL标准中的定义也模糊不清。 按照mysql中遵循的事务隔离级别,可以梳理一下其中的关系 隔…...

智慧乡村数字化农业全产业链服务平台建设方案PPT(99页)

1. 农业全产业链概念 农业全产业链是依托数字化、电子商务、云计算等技术,整合规划咨询、应用软件设计与开发等服务,推动农业产业升级和价值重塑,构建IT产业融合新生态。 2. 产业链技术支撑 利用云计算、大数据、区块链等技术,为…...

信息系统项目管理师-软考高级(软考高项)​​​​​​​​​​​2025最新(二)

个人笔记整理---仅供参考 第二章信息技术发展 2.1信息技术及其发展 2.1.1计算机软硬件 2.1.2计算机网络 2.1.3存储和数据库 2.1.4信息安全 公钥公开,私钥保密 2.1.5信息技术的发展 2.2新一代信息技术及应用 2.2.1物联网 2.2.2云计算 2.2.3大数据 2.2.4区块链 2.2.5…...

基于Springboot+Mysql的闲一品(含LW+PPT+源码+系统演示视频+安装说明)

系统功能 管理员功能:首页、个人中心、用户管理、零食分类管理、零食信息管理、订单评价管理、系统管理、订单管理。用户功能:首页、个人中心、订单评价管理、我的收藏管理、订单管理。前台首页功能:首页、零食信息、零食资讯、个人中心、后…...

索引下推(Index Condition Pushdown, ICP)

概念 索引下推是一种数据库查询优化技术,通过在存储引擎层面应用部分WHERE条件来减少不必要的数据读取。它特别适用于复合索引的情况,因为它可以在索引扫描阶段就排除不符合全部条件的数据行,而不是将所有可能匹配的记录加载到服务器层再进行…...

Transformer模型在自然语言处理中的实战应用

基于BERT的文本分类实战:从原理到部署 一、Transformer与BERT核心原理 Transformer模型通过自注意力机制(Self-Attention)突破了RNN的顺序计算限制,BERT(Bidirectional Encoder Representations from Transformers)作为其典型代表,具有两大创新: 双向上下文编码:通过…...

stm32week11

stm32学习 八.stm32基础 2.stm32内核和芯片 F1系统架构:4个主动单元和4个被动单元 AHB是内核高性能总线,APB是外围总线 总线矩阵将总线和各个主动被动单元连到一起 ICode总线直接连接Flash接口,不需要经过总线矩阵 AHB:72MHz&am…...

ConcurrentHashMap 源码分析

摘要 介绍线程安全集合类 ConcurrentHashMap 源码,包括扩容,协助扩容,红黑树节点读写线程同步,插入元素后累加键值对数量操作原子性实现。 1 成员变量及其对应的数据结构 底层由数组红黑树链表实现volatile long baseCount 和 v…...

Python数据可视化:从脚本到海报级图表

Python数据可视化:从脚本到海报级图表 引言 在数据分析和科学计算领域,Python 是一种强大且灵活的工具。本文将带您了解如何使用 Python 进行数据可视化,从简单的脚本到生成高质量的海报级图表。我们将重点介绍如何使用 Matplotlib 库来创建、保存和优化图表,以便在各种场…...

【Python语言基础】19、垃圾回收

文章目录 1. 垃圾回收1.1 引用计数-日常检查货物标签1.2 标记-清除算法:处理互相依赖的货物1.3 分代回收:根据货物新旧安排清理频率 2. 特殊方法2.1 构造和析构方法2.2 字符串表示方法2.3 比较方法2.4 容器相关方法2.5 可调用对象方法 1. 垃圾回收 计算…...

用户自定义函数(UDF)开发与应用(二)

五、UDF 在不同平台的应用 5.1 数据库中的 UDF 应用(如 MySQL、PostgreSQL) 在数据库领域,UDF 为开发者提供了强大的扩展能力,使得数据库可以完成一些原本内置函数无法实现的复杂操作。 以 MySQL 为例,假设我们有一…...

从三次方程到复平面:复数概念的奇妙演进(二)

注:本文为 “复数 | 历史 / 演进” 相关文章合辑。 因 csdn 篇幅限制分篇连载,此为第二篇。 生料,不同的文章不同的点。 机翻,未校。 History of Complex Numbers 复数的历史 The problem of complex numbers dates back to …...

深入剖析缓存一致性问题:延时双删的利弊与替代方案

在当今的分布式系统架构中,缓存凭借其快速的数据读取能力,成为提升系统性能和响应速度的关键组件。然而,缓存的引入也带来了缓存一致性问题,这一问题成为开发者在系统设计与维护中必须攻克的难关。缓存一致性问题聚焦于数据更新时…...

基于视觉语言模型的机器人实时探索系统!ClipRover:移动机器人零样本视觉语言探索和目标发现

作者:Yuxuan Zhang 1 ^{1} 1, Adnan Abdullah 2 ^{2} 2, Sanjeev J. Koppal 3 ^{3} 3, and Md Jahidul Islam 4 ^{4} 4单位: 2 , 4 ^{2,4} 2,4佛罗里达大学电气与计算机工程系RoboPI实验室, 1 , 3 ^{1,3} 1,3佛罗里达大学电气与计算机工程系F…...

LabVIEW往复式压缩机管路故障诊断系统

往复式压缩机作为工业领域的关键设备,广泛应用于石油化工、能源等行业,承担着气体压缩的重要任务。然而,其管路故障频发,不仅降低设备性能、造成能源浪费,还可能引发严重安全事故。因此,开发精准高效的管路…...

wsl下编译eXosip和osip库(Ubuntu 22.04)

1.下载eXosip和osip osip下载路径 Index of /mirror/gnu.org/savannah/osip eXosip下载路径 Index of /nongnu/exosip 我选的osip和eXosip版本为 5.2.0 2.编译osip库 tar -zxvf libosip2-5.2.0.tar.gz cd libosip2-5.2.0 ./configure make make install 在编译…...

springboot 项目 jmeter简单测试流程

测试内容为 主机地址随机数 package com.hainiu.example;import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotat…...

程序化广告行业(82/89):解锁行业术语,开启专业交流之门

程序化广告行业(82/89):解锁行业术语,开启专业交流之门 在程序化广告这个充满活力与挑战的行业里,持续学习是我们不断进步的动力源泉。一直以来,我都期望能和大家一起深入探索这个领域,共同成长…...

算法思想之位运算(二)

欢迎拜访:雾里看山-CSDN博客 本篇主题:算法思想之位运算(二) 发布时间:2025.4.13 隶属专栏:算法 目录 滑动窗口算法介绍六大基础位运算符常用模板总结 例题判定字符是否唯一题目链接题目描述算法思路代码实现 汉明距离题目链接题目…...

Collection vs Collections:核心区别与面试指南

Collection vs Collections:核心区别与面试指南 一、本质区别(核心记忆点) 维度CollectionCollections身份集合框架的根接口操作集合的工具类包位置java.utiljava.util是否可实例化❌ 接口✅ 类(但构造器私有,不可实…...

win10中快速访问部分外网的快捷设置方法

目的 不翻墙而访问一些本来访问很慢的网站。 具体操作 例如想要访问 github 网站,首先在终端(Terminal,cmd或powershell)中通过 ping github.com 判断网站是否可以被ping到: 若返回 Request time out. 则说明本方法不可用。若收到Reply&am…...

【计网】网络交换技术之报文交换(复习自用,了解,重要3)

复习自用的,处理得比较草率,复习的同学或者想看基础的同学可以看看,大佬的话可以不用浪费时间在我的水文上了 另外两种交换技术可以直接点击链接访问相关笔记: 电路交换 分组交换 一、报文交换的定义 报文交换(Me…...

【Web功能测试】Web商城搜索模块测试用例设计深度解析

Web商城的搜索模块功能测试用例设计 1.搜索功能设计 1.1 搜索框设计 位置显眼:通常置于页面顶部中央,符合用户习惯。 智能提示(Autocomplete):输入时实时推荐关键词、商品或分类(如“手机 苹果”&#x…...

穿梭在数字王国:Python进制转换奇遇记

穿梭在数字王国:Python进制转换奇遇记 想象一下,你是一位勇敢的探险家,正在穿越神秘的"数字王国"。在这个王国里,不同的地区使用着不同的语言(或者说,进制)。二进制村的居民只懂"0"和"1";八进制镇的人们使用0到7的数字;而十六进制城的…...

【动态规划】深入动态规划:背包问题

文章目录 前言01背包例题一、01背包二、分割等和子集三、目标和四、最后一块石头的重量|| 完全背包例题一、完全背包二、 零钱兑换三、零钱兑换||四、完全平方数 前言 什么是背包问题,怎么解决算法中的背包问题呢? 背包问题 (Knapsack problem) 是⼀种组…...

BUUCTF-web刷题篇(25)

34.the mystery of ip 给出链接,输入得到首页: 有三个按钮,flag点击后发现页面窃取客户端的IP地址,通过给出的github代码中的php文件发现可以通过XFF或Client-IP传入值。使用hackbar或BP 使用XSS,通过github给出的目录…...

StringBuilder类基本使用

文章目录 1. 基本介绍2. StringBuilder常用方法3. String、StringBuffer 和 StringBuilder 的比较4. String、StringBuffer 和 StringBuilder 的效率测试5. String、StringBuffer 和 StringBuilder 的选择 1. 基本介绍 一个可变的字符序列。此类提供一个与StringBuffer兼容的A…...

设计模式 --- 访问者模式

访问者模式是一种行为设计模式,它允许在不改变对象结构的前提下,定义作用于这些对象元素的新操作。 优点: 1.​​符合开闭原则:新增操作只需添加新的访问者类,无需修改现有对象结构。 ​​2.操作逻辑集中管理​​&am…...

常用AI辅助编程工具及平台介绍

在当今快速发展的技术领域,AI编程工具已经成为提升开发效率和代码质量的重要手段。这些工具利用人工智能技术来帮助开发者提高编程效率、生成代码建议、自动完成功能,并识别错误。接下来,我们将详细介绍几款主流的AI编程工具及其特点,以帮助你选择最适合自己的开发需求的工…...

HashTable,HashMap,ConcurrentHashMap之间的区别

文章目录 线程安全方面性能方面总结 线程安全方面 HashMap线程不安全,HashMap的方法没有进行同步,多个线程同时访问HashMap,并至少有一个线程修改了其内容,则必须手动同步。 HashTable是线程安全的,在HashMap的基础上…...