MySQL----事务的隔离级别(附带每一级别实例截图)

news2025/2/25 14:23:45

先来回顾一下事务并发可能存在的三大问题:

脏读(Dirty Read)–不能接受

一个事务读取了另一个事务未提交的数据。例如当事务A和事务B并发执行时,当事务A更新后,事务B查询读取到A尚未提交的数据,此时事务A回滚,则事务B读到的数据就是无效的脏数据。(事务B读取了事务A尚未提交的数据)

不可重复读(NonRepeatable Read)—具体业务具体分析

一个事务的操作导致另一个事务前后两次读取到不同的数据。例如当事务A和事务B并发执行时,当事务B查询读取数据后,事务A更新操作更改事务B查询到的数据,此时事务B再次去读该数据,发现前后两次读的数据不一样。(事务B读取了事务A已提交的数据)

虚读(Phantom Read)幻读—具体业务具体分析

一个事务的操作导致另一个事务前后两次查询的结果数据量不同。例如当事务A和事务B并发执行时,当事务B查询读取数据后,事务A新增或者删除了一条满足事务B查询条件的记录,此时事务B再去查询,发现查询到前一次不存在的记录,或者前一次查询的一些记录不见了。(事务B读取了事务A新增加的数据或者读不到事务A删除的数据)

隔离级别

为了解决以上问题,MySQL为事务提供了四种隔离级别,由低到高分别为Read Uncommited、Read Commited、Repeatable Read、Serializable。

  • TRANSACTION_READ_UNCOMMITTED。未提交读。说明在提交前一个事务可以看到另一个事务的变化。这样读脏数据,不可重复读和虚读都是被允许的。
  • TRANSACTION_READ_COMMITTED。已提交读。说明读取未提交的数据是不允许的。这个级别仍然允许不可重复读和虚读产生。脏读不会产生
  • TRANSACTION_REPEATABLE_READ。可重复读。说明事务保证能够再次读取相同的数据而不会失败,但虚读仍然会出现。脏读和不可重复读不会产生
  • TRANSACTION_SERIALIZABLE。串行化。是最高的事务级别,它防止读脏数据,不可重复读和虚读。就是串行读取数据,隔离级别最高,但是并发性最低,比较消耗数据库性能,一般不用。

总结:

  • 四种隔离级别对以上三种并发存在的问题的解决能力:
隔离级别脏读不可重复读幻读
未提交读×××
已提交读××
可重复读×
串行化
  • 越往上(->未提交读),并发能力越高,但是数据的一致性以及安全性越差;越往下(->串行化),并发能力越高,数据的一致性以及安全性越高。
  • 事务隔离级别越高,为避免冲突所花费的性能也就越多。
  • 在“可重复读”级别,实际上可以解决部分的虚读问题,但是不能防止update更新产生的虚读问题,要禁止虚读产生,还是需要设置串行化隔离级别。

查看隔离级别

select @@transaction_isolation;

设置隔离级别

set transaction_isolation='READ-UNCOMMITTED';

在这里插入图片描述

举个栗子~

READ-UNCOMMITTED 未提交读

在这里插入图片描述

READ-COMMITTED 已提交读

在这里插入图片描述

REPEATABLE_READ 可重复读—MySQL的默认隔离级别

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可重复读在一定意义上,是可以防止虚读的!他可以防止insert和delete,但是不能防止update。

SERIALIZABLE 串行化

在这里插入图片描述
相当于读写锁,允许一起读,不允许一起写。mysql不会运行一直阻塞,超过时间限制就会报错。

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

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

相关文章

探索客户端-服务器架构:网络应用和分布式系统的基石

目录 前言1 客户端-服务器架构概述1.1 客户端的角色1.2 服务器的角色 2 客户端-服务器架构的工作原理3 客户端-服务器架构的应用4 客户端-服务器架构的优缺点4.1 优点方面4.2 缺点方面 5 客户端-服务器架构的未来发展结语 前言 在当今信息技术飞速发展的时代,客户端…

【数据结构】第十八弹---C语言实现堆排序

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】 目录 1、堆排序 1.1、基本思想 1.2、初步代码实现 1.3、代码优化 1.4、代码测试 总结 1、堆排序 在博主数据结构第十二弹---堆的应用有详细讲解堆…

【SpringMVC】第1-7章

第1章 初始SpringMVC 1.1 学习本套教程前的知识储备 JavaSEHTMLCSSJavaScriptVueAJAX axiosThymeleafServletMavenSpring 1.2 什么是MVC MVC架构模式相关课程,在老杜的JavaWeb课程中已经详细的讲解了,如果没有学过的,可以看这个视频&…

kafka学习笔记07

Kafka高可用集群搭建节点需求规划 开放端口。 Kafka高可用集群之zookeeper集群搭建环境准备 删除之前的kafka和zookeeper。 重新进行环境部署: 我们解压我们的zookeeper: 编辑第一个zookeeper的配置文件: 我们重复类似的操作,创建三个zookeeper节点: 记…

最新暑假带刷规划:50天吃透660+880!

现在只刷一本题集根本不够 去做做24年的考研真题卷就什么都明白了,24年的卷子就是典型的知识点多,杂,计算量大。 而现在市面上的任何一本题集,都无法做到包含所有的知识点,毕竟版面有限! 所以&#xff0…

Python+Pytest+Yaml+Allure接口自动化测试框架详解

PythonPytestYamlAllure整体框架目录(源代码请等下篇) 框架详解 common:公共方法包 –get_path.py:获取文件路径方法 –logger_util.py:输出日志方法 –parameters_until.py:传参方式方法封装 –requests_util.py:请求方式方法封…

《人工智能导论》书面作业

第 1 章:绪论 1、分别解释人工智能的三个主要学派的代表人物和主要思想,并给出每个学派的一个实际应用实例。 符号主义(Symbolists 或 逻辑主义): 代表人物:马文闵斯基(Marvin Minsky&#xf…

SEO工具,SEO优化人员必备工具

工欲善其事必先利其器,现在是一个讲究效率的时代,学会使用工具,往往能事半功倍!使用SEO工具可以帮助你更有效地进行关键词研究,创建高质量的内容,以及建立高质量的外部链接。通过这些工具,你可以…

全面赋能,永久免费!讯飞星火API能力正式免费开放

2023年5月,讯飞星火正式发布,迅速成为千万用户获取知识、学习知识的“超级助手”,成为解放生产力、释放想象力的“超级杠杆”。 2024年5月,讯飞星火API能力正式免费开放,携手生态开发者加快大模型赋能刚需场景。 领…

嵌入式开发十九:SysTick—系统定时器

在前面实验中我们使用到的延时都是通过SysTick进行延时的。 我们知道,延时有两种方式:软件延时,即CPU 循环等待产生的,这个延时是不精确的。第二种就是滴答定时器延时,本篇博客就来介绍 STM32F4 内部 SysTick 系统定时…

如何手撸一个自有知识库的RAG系统

RAG通常指的是"Retrieval-Augmented Generation",即“检索增强的生成”。这是一种结合了检索(Retrieval)和生成(Generation)的机器学习模型,通常用于自然语言处理任务,如文本生成、问…

硬件开发笔记(二十):AD21导入外部下载的元器件原理图库、封装库和3D模型

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/139707771 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV…

一文读懂分布式系统CAP理论与BASE理论概念

CAP理论 Cap理论又被称作布鲁尔定理(Brewers theorem),它指出对于一个分布式系统来说,不可能同时满足如下三点: 一致性(Consistency) 可用性(Availability) 分区容错性(Partition tolerance)(以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达…

windows 系统根据端口查找进程,杀死进程

在启动项目时,往往设置的端口被占用,这时需要杀死端口所占用的进程,然后再重启项目。 netstat -ano | findstr :8085 taskkill /F /PID 25184 杀死进程后,再执行命令 netstat -ano | findstr :8085 进行查看端口占用情况

B树(数据结构篇)

数据结构之B树 B-树(B-tree) 概念: B-树是一个非二叉树的多路平衡查找树(数据有序),是一颗所有数据都存储在树叶节点上的树,不一定存储具体的数据,也可以是指向包含数据的记录的指针或地址 对于**阶为M(子节点数量在2和M之间)*…

嵌入式数据库_2.嵌入式数据库的一般架构

嵌入式数据库的架构与应用对象紧密相关,其架构是以内存、文件和网络等三种方式为主。 1.基于内存的数据库系统 基于内存的数据库系统中比较典型的产品是每个McObject公司的eXtremeDB嵌入式数据库,2013年3月推出5.0版,它采用内存数据结构&…

Ansys Mechanical|学习方法

Ansys Mechanical是Ansys的旗舰产品之一,涉及的学科体系全面丰富,包括的力学分支主要有理论力学,振动理论,连续介质力学,固态力学,物理力学,爆炸力学及应用力学等。 在自媒体及数字经济飞速发展…

Samtec制造理念系列一 | 差异变量的概念

【摘要/前言】 制造高端电子产品是非常复杂精密的过程。制作用于演示或原型的一次性样品可能具有挑战性,但真正的挑战在于如何以盈利的方式持续生产。 这就是Samtec风险投资研发工程总监Aaron Tucker在一次关于生产高密度微小型连接器的挑战的演讲中所强调的观点。…

使用QMainWindow、QMenuBar,QToolBar文本编辑器界面布局设置

使用QMainWindow、QMenuBar,QToolBar设计一个文本编辑器的界面 菜单 菜单输入处输入 文件$F ,呈现文件(F),快捷键AltF ,打开文件菜单 添加工具栏 在窗体空白处,右键添加工具栏 Action工具 在Designer界面下方 批量定义action 拖入到menu和 toolBar中 Too…

Docker 拉取镜像失败处理 配置使用代理拉取

解决方案 1、在 /etc/systemd/system/docker.service.d/http-proxy.conf 配置文件中添加代理信息 2、重启docker服务 具体操作如下: 创建 dockerd 相关的 systemd 目录,这个目录下的配置将覆盖 dockerd 的默认配置 代码语言:javascript 复…