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

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时范围查询,产生了幻读

在这里插入图片描述

http://www.xdnf.cn/news/4250.html

相关文章:

  • 基于Dify的工作流实现python编码规则的检查
  • 【神经网络、Transformer及模型微调】
  • 六足机器人结构优化可载重20kg,适应河床、冰面等复杂地形
  • 【C语言】--指针超详解(一)
  • 对接印度股票数据实战 - Python实现完整指南
  • 结构体内存对齐规则与优化
  • iPaaS核心解析与牧场场景应用方案
  • 前端正则学习记录
  • 2025Mapbox零基础入门教程(8)geojson加载点要素
  • MySQL数据库中篇
  • python简易实现勒索病毒
  • 最小方差自校正调节器设计
  • Python: pipx详细解释
  • 【Day 20】HarmonyOS多语言适配开发实战
  • 使用OpenCV 和 Dlib 实现年龄性别预测
  • Spring AI系列——大模型驱动的自然语言SQL引擎:Java技术实现详解
  • 用DEEPSEEK做开发辅助应该注意什么
  • Nyx-1 思路整理
  • 【Python】--装饰器
  • Coding Practice,48天强训(30)
  • 2. H264编码
  • 垂直领域知识图谱构建与大模型融合技术方案
  • 达梦DM数据库安装步骤
  • 普通IT的股票交易成长史--20250506午复盘
  • Leetcode - 周赛448
  • 分割回文串例题-区分组合回溯与最优动态规划
  • 主数据 × 知识图谱:打造企业认知智能的核心基础设施
  • C++GO语言微服务项目之 go语言基础语法
  • pcl平面投影
  • 解锁科研文献检索密码:多工具协同攻略