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

news/2024/7/23 18:40:29

目录

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

一、引入

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

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

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

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

1. 区别

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

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

2. 注意

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


三、隔离级别

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

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

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

image_name

四、参考资料

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


http://www.niftyadmin.cn/n/394514.html

相关文章

chatgpt赋能python:Python反转数字的方法

Python反转数字的方法 Python作为一种高级编程语言,拥有着丰富的数学计算、数组处理及字符串操作等功能。在实际开发中,需要进行反转数字的操作时,Python提供了多种方法来完成此项任务。 用Python反转数字 反转数字是指将一个数字从后往前…

自然语言处理从入门到应用——自然语言处理的基本问题:文本分类(Text Classification, Text Categorization)

分类目录:《自然语言处理从入门到应用》总目录 文本分类(Text Classification, Text Categorization)是最简单也是最基础的自然语言处理问题。即针对一段文本输入,输出该文本所属的类别,其中,类别是事先定义…

Apache网页的优化与安全

文章目录 Apache 网页的压缩Apache的页面缓存Apache页面隐藏版本信息Apache页面设置防盗链 Apache 网页的压缩 检查压缩模块 apachectl -t -D DUMP_MODULES | grep "deflate"安装mod_deflate 模块 如果没有安装mod_deflate 模块,重新编译安装 Apache 添…

剑指 Offer 24. 反转链表解题思路

文章目录 题目解题思路 题目 定义一个函数&#xff0c;输入一个链表的头节点&#xff0c;反转该链表并输出反转后链表的头节点。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 限制&#xff1a; 0 < 节点个数 < 5000 …

XP(极限编程)在项目中如何使用呢?

XP&#xff08;极限编程&#xff09;是一种敏捷软件开发方法&#xff0c;强调团队合作、快速迭代和高质量的软件交付。以下是在项目中使用XP的一般步骤和实践&#xff1a; 用户故事&#xff08;User Stories&#xff09;&#xff1a;以用户的角度编写用户故事&#xff0c;描述…

windows修改Pycharm的右键打开方式

title: windows中open floder as Pycharm太长了怎么修改 date: 2023-06-04 author: IoT_H2 tags: windows系统问题 categories: Markdown 问题描述&#xff1a; Pycharm这一栏这么长&#xff0c;长的我实在是很难受&#xff0c;事实上Jetbrains家的软件都是这个鸟模样 导…

javaweb学习笔记——JDBC

文章目录 主要内容JDBC抽取JDBC工具类&#xff1a;JDBCUtilsJDBC控制事务 主要内容 1、JDBC基本概念 2、快速入门 3、对JDBC中各个接口和类详解 JDBC 1、概念 Java DataBase Connectivity Java数据库连接&#xff0c;Java语言操作数据库 JDBC本质&#xff1a;其实是官方&…

【vue】三:核心处理---vue的生命周期

文章目录 1.Vue生命周期的四个阶段&#xff0c;八个钩子2.vue的生命周期图例3. 初始阶段&#xff1a;虚拟DOM生成4. 挂载阶段&#xff1a;真实DOM生成5. 更新阶段&#xff1a;data变化重新渲染6. 销毁阶段&#xff1a;卸载所有&#xff0c;销毁vm 1.Vue生命周期的四个阶段&…