MySQL脏读、不可重复读、幻读的区别与注意事项

news2024/11/28 2:55:49

目录

  • 一、引入
  • 二、事务并发执行会遇到的问题
    • 1. 区别
    • 2. 注意
  • 三、隔离级别
  • 四、参考资料

一、引入

MySQL的架构是 C/S 架构(即 客户端/服务器 架构),一个服务器可能有多个客户端与之相连接,每个连接称之为会话(Session),相应的客户端可以在相应会话里面给服务器发送请求语句(即执行事务),一个客户端对应执行一个事务,所以服务器能够同时处理多个事务。

二、事务并发执行会遇到的问题

事务并发执行的时候,可能会出现 脏写、脏读、不可重复读、幻读的问题。它们的严重程度排序:脏写 > 脏读 > 不可重复读 > 幻读。

  • 脏写:两个事务同时对同一个地方的数据进行写操作,会出现数据覆盖,导致数据不一致。(即一个事务修改了另一个事务未提交的数据)。脏写是最差的情况,是数据库中不允许出现的情况,所以直接通过加锁来解决。后面所说的隔离级别都是针对读操作而言的

1. 区别

MySQL读操作失误的情况有:脏读、幻读、不可重复读,它们是MySQL隔离级别不同导致,隔离级别越低,导致的错误就可能越严重,比如:读未提交隔离级别,甚至连脏读都无法解决。

  • 脏读:一个事务读到另一个事务未提交的数据
  • 不可重复读:事务A多次读取同一个地方的数据,但得到的结果不一样
  • 幻读:事务A多次读取同一个地方的数据,发现 多了n条数据 或 少了n条数据,但这个增删操作并不是事务A自己做的,而是其它事务做的

2. 注意

脏读、不可重复读、幻读都是事务并发执行中可能出现的问题,对于事务A,它自己进行的增删改操作对于自己是可见的,是不算脏读、不可重复读、幻读的,因为这不是并发事务的场景


三、隔离级别

之所以有隔离级别存在,就是出于性能的考虑。如果不考虑性能的话,可以直接完全隔离,让一个事务执行完,再执行下一个事务,这样就必然不会出现脏读、不可重复读、幻读的问题。

“鱼和熊掌,不可兼得”,所以为了提高性能,所以舍弃了一部分隔离性。根据舍弃隔离性的程度不同,分为:读未提交、读已提交、可重复读、串行化四种隔离级别,越往后,舍弃的隔离性越少,隔离程度越高。

各个隔离级别可能出现的读操作失误如下:

image_name

四、参考资料

《MySQL 是怎样运行的:从根儿上理解 MySQL》

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

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

相关文章

chatgpt赋能python:Python去掉分隔符:优化SEO效果的一种方法

Python去掉分隔符:优化SEO效果的一种方法 在现代的数字化时代,SEO已经成为了许多企业、个人和网站运营者最为关心的问题之一。SEO指的是搜索引擎优化,通过各种技术手段和优化方式,提高网站在搜索引擎结果页面上显示的排名。Pytho…

PageHelper使用

PageHelper &#xff1a; mybatis中的分页插件 文档 &#xff1a; https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md springboot使用PageHelper <dependency><groupId>com.github.pagehelper</groupId><artifactId…

利用DocsGPT快速搭建一个问答式的文档检索服务

docsGPT 示例 基于企业内部独有的知识库&#xff0c;进行智能的客服问答&#xff0c;毫无疑问是 ChatGPT 出圈以后&#xff0c;所有公司想要融入 ChatGPT 技术时的第一反应。可惜 ChatGPT 实际上是一个基于大语言模型实现的&#xff0c;包括很多其他功能的&#xff0c;完整的聊…

电力电子技术的论文

电力电子技术的论文范文一&#xff1a;Matlab电力电子技术应用 【文章摘要】信息技术的快速发展推动许多学科进一步完善&#xff0c;以电力电子技术为例&#xff0c;其本身具有较强的理论性、实践性等特征&#xff0c;涉及的波形图、电路图也较多&#xff0c;相关设计人员需掌握…

Hitcon 2016 SleepyHolder-fastbin_dup_consolidate.c

参考/题目下载&#xff1a; https://github.com/mehQQ/public_writeup/tree/master/hitcon2016/SleepyHolder https://blog.csdn.net/seaaseesa/article/details/105856878 1&#xff0c;三联 保护:基本都开了 功能&#xff1a; 0、唤醒功能&#xff1b; 1、创建-secret&#…

华为OD机试真题 Java 实现【猴子爬山】【2023 B卷 100分】,附详细解题思路

一、题目描述 一天一只顽猴想去从山脚爬到山顶&#xff0c;途中经过一个有个N个台阶的阶梯&#xff0c;但是这猴子有一个习惯&#xff1a; 每一次只能跳1步或跳3步&#xff0c;试问猴子通过这个阶梯有多少种不同的跳跃方式&#xff1f; 二、输入描述 输入只有一个整数N&…

Custom Frames插件:内置Web应用 | Obsidian实践

今天跟大家分享一个Obsidian插件&#xff1a;Custom Frames。 这个插件的美妙之处在于&#xff0c;可以将一个Obsidian外部的Web应用&#xff0c;内置到Obsidian内部来操作和使用。 这么说可能是有点儿抽象&#xff0c;就比方说吧&#xff0c;微信读书有个网页版&#xff08;后…

嵌入式开发——文件系统部署rz、sz命令

1、rz、sz命令源码下载 下载网址&#xff1a;https://ohse.de/uwe/software/lrzsz.html 2、源码编译 tar -zxvf lrzsz-0.12.20.tar.gz cd lrzsz-0.12.20 ./configure make CCaarch64-mix410-linux-gcc #指定芯片平台的交叉编译链3、源码编译遇到的问题 3.1、报错打印 (1)报错…

绝地求生可以这样制作 (Python 版)

一、概述 1.1 效果 总的来说&#xff0c;这种方式是通过图像识别来完成的&#xff0c;不侵入游戏&#xff0c;不读取内存&#xff0c;安全不被检测。 1.2 前置知识 游戏中有各种不同的枪械&#xff0c;不同的枪械后坐力不一样&#xff0c;射速也不同。相同的枪械&#xff0c;…

【Java】Java(四十八):日志

文章目录 1. 概述2. 日志体系结构和Log4J3. 入门案例4. 配置文件详解 1. 概述 程序中的日志可以用来记录程序在运行的时候点点滴滴。并可以进行永久存储。 日志与输出语句的区别 2. 日志体系结构和Log4J 体系结构 Log4J Log4j是Apache的一个开源项目。 通过使用Log4j&#…

vue实现导航栏功能的方法

在 Vue中实现导航栏功能&#xff0c;我们可以将导航栏作为一个单独的组件来实现。这样可以方便我们进行修改、定制&#xff0c;并有多种方式进行添加导航栏&#xff0c;如使用 Vue的 document. position属性或者使用vue-dialog-position属性来添加导航栏。在此&#xff0c;我们…

mac os终于成功安装MySQL

目录 PART 1. 下载MySQL PART 2. 安装MySQL PART 3. 启动MySQL 大家好&#xff0c;我是tin&#xff0c;一个热爱技术喜欢折腾的开发&#xff0c;欢迎阅读我的重磅肝文&#xff1a; 1. 面试官&#xff1a;你给我讲一讲&#xff0c;Dubbo暴力停机&#xff0c;消费者是如何感知…

机器学习知识经验分享之六:R语言绘图之小提琴图绘制

python语言用于深度学习较为广泛&#xff0c;R语言用于机器学习领域中的数据预测和数据处理算法较多&#xff0c;后续将更多分享机器学习数据预测相关知识的分享&#xff0c;有需要的朋友可持续关注&#xff0c;有疑问可以关注后私信留言。 文章目录 一、小提琴图 二、相关代…

node、node-sass和sass-loader版本错误问题 this.getOptions is not a function

安装node-sass和sass-loader后&#xff0c;使用npm run dev启动项目时一直报错。网上查明原因&#xff0c;是因为版本问题&#xff0c;但是修改node-sass和sass-loader版本后&#xff0c;又提示说node版本不兼容&#xff0c;我的node版本是18。随后又尝试了很多node-sass和sass…

【STM32CubeMX项目】STM32DHT11工程文件

前言 在我的另一篇里文章里已经介绍过DHT11的时序理论了&#xff0c;这里介绍下&#xff0c;我写DHT11的数据获取的思路和调用。程序验证后&#xff0c;发现下述问题&#xff0c;暂时解决不了&#xff0c;但是还是会把个人的代码流程&#xff0c;函数的编写思路和工程写下&…

蔚来的痛苦远未结束

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 总结 &#xff08;1&#xff09;蔚来5月份的交付数据没有计入ES6的订单情况 &#xff08;2&#xff09;蔚来现在面临的主要问题是销售成本在不断增长&#xff0c;残酷的事实是&#xff0c;蔚来资产负债表上的现金只能维持5…

在Windows中安装极狐GitLab Runner

官方文档&#xff1a;https://docs.gitlab.cn/runner/install/windows.html 在Windows中安装极狐GitLab Runner 1.下载GitLab Runner二进制文件&#xff0c;新建一个文件夹&#xff08;不要有中文&#xff09;&#xff0c;并将二进制文件放入该文件夹&#xff0c;重命名为“git…

django连接mysql

1.0app目录 1.pip 安装mysqlclient 2.在cmd里面新建一个django项目 3.在cmd里面新建一个app名字叫blogg 4.创建自己的数据库 django连接mysql 首建项目maneage里面setting的mysql配置 6.setting里面的installed_apps里面加上app的配置 7.app里面models模板的设置…

平面图学习

空调管道的设计&#xff1a;某景区有6个景点&#xff0c;位置分布如下图。 分析者认为&#xff1a;(1) A1与A4&#xff0c; (2) A2与A5&#xff0c; (3) A3与A6间人流较少&#xff0c;其它景点之间人流量大&#xff0c;必须投资铺设空调管道&#xff0c;但要求空调管道间不能交…

国密算法初探 | 入门教程 | 解析

国密算法即国家密码局认定的国产密码算法。 国密算法是商用密码&#xff0c;仅能用于商业用途。国密算法是一套标准&#xff0c;由国家密码局制定的规范&#xff0c;凡是符合的&#xff0c;都可以称之为国密算法。国密算法暂无官方的代码实现&#xff0c;企业可以自己编码实现…