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

MySQL - 事务

SQL 标准定义了四个隔离级别

  • READ-UNCOMMITTED(读取未提交): 事务的修改,即使没有提交,对其他事务也都是可见的。事务能够读取未提交的数据,这种情况称为脏读。

  • READ-COMMITTED(读取已提交): 事务读取已提交的数据,大多数数据库的默认隔离级别。当一个事务在执行过程中,数据被另外一个事务修改,造成本次事务前后读取的信息不一样,这种情况称为不可重复读。

  • REPEATABLE-READ(可重复读): 这个级别是MySQL的默认隔离级别,它解决了脏读的问题,同时也保证了同一个事务多次读取同样的记录是一致的,但这个级别还是会出现幻读的情况。幻读是指当一个事务A读取某一个范围的数据时,另一个事务B在这个范围插入行,A事务再次读取这个范围的数据时,会产生幻读

  • SERIALIZABLE(可串行化): 最高的隔离级别,完全服从ACID的隔离级别。所有的事务依次逐个执行,这样事务之间就完全不可能产生干扰,也就是说,该级别可以防止脏读、不可重复读以及幻读。

什么是脏读、幻读、不可重复读?
  • 脏读:T1事务修改了A值(A‘),但是还没有commit。T2事务读取了A修改后的(A’)。

  • 不可重复读

    • 场景描述:

      • T1事务在a时间查询A的值(A),但是未提交

      • T2事务在T1事务之后修改了A的值(A‘),并提交了

      • T1事务在b时间再次查询A的值,发现变成了A’

    • 重点:是做update和del操作

    • 扩展:InnoDB 通过使用 MVCC 来解决不可重复读的问题。在RR这种隔离级别下,当我们使用快照读进行数据读取的时候,只会在第一次读取的时候生成一个Read View,后续的所有快照读都是用的同一个快照,所以就不会发生不可重复读的问题了

  • 幻读

    • 场景描述

      • T1事务在a时范围查询,未提交

      • T2事务insert 或 del数据**(重点是:插入或者删除,范围查询内,锁未覆盖)**

      • T1事务在b时范围查询,产生了幻读

在这里插入图片描述

相关文章:

  • 5.2创新架构
  • 浔川AI 第二次内测报告
  • 浅析MySQL 的 **触发器(Trigger)** 和 **存储过程(Stored Procedure)原理及优化建议
  • c++学习合集(2025-4-29)
  • 基于Anaconda的Pycharm环境配置
  • 使用图像生成式AI和主题社区网站助力运动和时尚品牌的新产品设计和市场推广的点子和实现
  • 20250506让NanoPi NEO core开发板使用Ubuntu core16.04系统的TF卡启动
  • 中达瑞和便携式高光谱相机:珠宝鉴定领域的“光谱之眼”
  • 车载通信网络安全:挑战与解决方案
  • 【表设计】外键的取舍-分布式中逐渐消失的外键
  • 【十五】Mybatis动态SQL实现原理
  • 在Unity AR应用中实现摄像头切换功能
  • 2025年服务器技术全景解析:量子计算、液冷革命与未来生态构建
  • 基于图像处理的道路监控与路面障碍检测系统设计与实现 (源码+定制+开发) 图像处理 计算机视觉 道路监控系统 视频帧分析 道路安全监控 城市道路管理
  • HTTP请求与前端资源未优化的系统性风险与高性能优化方案
  • Java高频面试之并发编程-12
  • 论文速读:《CoM:从多模态人类视频中学习机器人操作,助力视觉语言模型推理与执行》
  • element-ui日期时间选择器禁止输入日期
  • css filter 常用方法函数和应用实例
  • Android SDK 国内镜像及配置方法(2025最新,包好使!)
  • 终于,俄罗斯和乌克兰谈上了
  • 打击网络侵权盗版!四部门联合启动“剑网2025”专项行动
  • 自强!助残!全国200个集体和260名个人受到表彰
  • 吉利汽车一季度净利润大增264%,称整合极氪后实现整体效益超5%
  • 董军同德国国防部长举行会谈
  • 警方通报男子广州南站持刀伤人:造成1人受伤,嫌疑人被控制