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

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

脏读(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.mfbz.cn/a/716369.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

矩阵乘法的直觉

矩阵乘法是什么意思? 一种常见的观点是矩阵乘法缩放/旋转/倾斜几何平面: NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜…

Django REST framework序列化器详解:普通序列化器与模型序列化器的选择与运用

系列文章目录 Django入门全攻略:从零搭建你的第一个Web项目Django ORM入门指南:从概念到实践,掌握模型创建、迁移与视图操作Django ORM实战:模型字段与元选项配置,以及链式过滤与QF查询详解Django ORM深度游&#xff…

实用技巧:跳过TCODE权限检查ALINK_CALL_TRANSACTION

RFC:ALINK_CALL_TRANSACTION 遇到tcode 提示没有权限打开,可以通过这个RFC,debug 修改检查值,打开TCODE。 适用于紧急情况 断点打在20行,SY-SUBRC 的值改成 1

碳化硅陶瓷膜出色的耐腐蚀性能

在科技日新月异的今天,材料科学的发展为各个领域带来了革命性的变革。碳化硅陶瓷膜,作为一种高性能的先进陶瓷材料,凭借其独特的物理和化学特性,正在逐步成为现代工业不可或缺的一部分。 碳化硅陶瓷膜,顾名思义&#x…

TensorRT的循环样例代码

官方文档地址 https://docs.nvidia.com/deeplearning/tensorrt/developer-guide/index.html#define-loops 非顺序结构,其内容确实有点乱,而且没有完整可运行的样例。 可以有多个IIteratorLayer, IRecurrenceLayer, and ILoopOutputLayer 层,最多有2个ITripLimitLayers层。 …

有人说考个PMP证两个星期搞定?

PMP考试的时间并不需要太久,如果高效用心备考的话在对考试需要准备的时间上也只需要2-3个月的业余时间。而一次考试的时间也只需要半天,一门科目,就是《PMBOK》的知识。所以如果想学习项目管理考PMP认证的朋友,大可放心参加考试。…

【递归、搜索与回溯】综合练习三

综合练习三 1.优美的排列3.N 皇后3.有效的数独4.解数独 点赞👍👍收藏🌟🌟关注💖💖 你的支持是对我最大的鼓励,我们一起努力吧!😃😃 1.优美的排列 题目链接:5…

用寄存器读取文件的数据的时候,寄存器怎么读取,寄存器的高位和低位分别是什么

如图所示 寄存器读取数据的时候,数据自身是什么样的,寄存器读的时候就原样存储在寄存器里,高位就是第一个数据,低位就是最后一个数据 寄存器读取数据原理是,将给定的二进制数反转,我理解成调转一下车头&…

驾驭未来:智能网关如何革新车联网体验

车联网(Internet of Vehicles)是一个跨领域的技术综合体,它基于物联网,利用先进的信息通信技术实现车与车、车与路、车与人、车与服务平台等的全方位网络连接。 龙兴物联智能网关是集成了多协议、多接口,具有综合数据采…

Three.js动效(第15辑):让前端手撕UI,拳打后端的效果。

three.js的设计效果非常复杂,后端提供的数据接口问题百出,这很容易让前端手撕UI、拳打后端,这种请详细该如何办呢? 前端 VS UI: 1. 沟通协调:UI和前端应该加强沟通,理解对方的工作难点和需求&…

「GitHub热点速览」7个学编程必看的开源项目!附链接可直达!

前言 今天特推的两个项目都是异常实用的项目,一个是直接将视频替换成另外一个语种;另外一个则是解决日志阅读问题的 tailspin,让你在成千上万条日志中快速定位特定的日志。 另外,还有两大集成者,一个是解决可观测性的…

去哪儿网PMO张璐受邀为第十三届中国PMO大会演讲嘉宾

全国PMO专业人士年度盛会 去哪儿网PMO张璐女士受邀为PMO评论主办的2024第十三届中国PMO大会演讲嘉宾,演讲议题为“数字化助力组织目标落地”。大会将于6月29-30日在北京举办,敬请关注! 议题简要 本次议题将分享去哪儿流程标准化&工具化…

python17 字符串的常用操作

字符串常用方法 代码 字符串常用方法s i am SyLar, I LOVE YOU s1 s.capitalize()# 首字母变成大写 print(s1) s2s.lower() # 全部变成小写 print(s2) s3 s.upper()#全部变成大写 忽略大小写 推荐用这个 print(s3)title abc_def_hi print(标题:,title.title())s4 HelloWor…

2024年第三届数据统计与分析竞赛(A题)数学建模完整思路+完整代码全解全析

本次A题主要涉及正态分布、数据处理、自然语言处理等知识点 问题一题目重述:根据附件中抖音用户的评论数据,对抖音 APP 的“评分”和“点赞数”进行数据统计与分析,并使用假设检验判断这两个指标的分布是否服从正态分布。 接下来对问题一进…

2024南京人工智能展览会:推动南京地区人工智能产业快速发展

南京,作为长三角地区的一颗璀璨明珠,近年来在人工智能产业的发展上取得了举世瞩目的成绩。这座城市以其深厚的科技底蕴和前瞻的战略眼光,正逐步成为国内外人工智能技术研发和应用的重要基地。 近年来,随着人工智能技术的快速发展…

纷享销客PaaS平台基础能力:一文说清 “业务定制能力”

01、业务对象定制能力 一个优秀的PaaS(平台即服务)平台的业务对象定制能力应该具备以下特点: 敏捷的业务模型: 能够根据用户的业务需求,提供可定制的数据模型和数据处理能力,支持各种数据类型和数据操作。 可视化的界面定制能力…

Nature 苏浩团队发表创新人工智能“仿真中学习”框架,实现外骨骼的智能性和通用性

北京时间2024年6月12日23时,美国北卡罗来纳州立大学与北卡罗来纳大学教堂山分校的苏浩团队在《自然》(Nature)上发表了一篇关于机器人和人工智能算法相结合服务人类的突破性研究论文,标题为“Experiment-free Exoskeleton Assista…

股票交易系统

效果展示,如下动图: 首先简述一下股票交易规则: 买卖股票,股民可以自行选择股票的买入或卖出价格和股票的数量,但是用户不一定马上就交易成功,只有当股票价格低于买入价才有机会买入,高于卖出价…

MS1112驱动开发(iio框架)

作者简介: 一个平凡而乐于分享的小比特,中南民族大学通信工程专业研究生在读,研究方向无线联邦学习 擅长领域:驱动开发,嵌入式软件开发,BSP开发 作者主页:一个平凡而乐于分享的小比特的个人主页…

期货交易中的仓位管理

期货市场就像是一个复杂的游戏场所。由于期货高杠杆双向交易机制的影响,期货交易中错误的容忍度很低,所以期货交易系统中最重要的是风险控制。而风险控制体系最核心的是仓位管理,因为仓位的多少直接影响到潜在损失的大小。 仓位管理指的是账户…