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

脏读、幻读、可重复读

脏读

  • 定义:一个事务读取了另一个事务尚未提交的数据 。比如事务 A 修改了某条数据但还没提交,此时事务 B 读取了这条被修改但未提交的数据。若事务 A 后续回滚,事务 B 读到的数据就是无效的,相当于读到了 “脏数据”。
  • 危害:可能基于错误或不存在的数据做决策,破坏数据一致性 。比如银行转账,转账事务未提交时,查询事务若读取到未确定的转账结果,会造成账户金额显示混乱。
  • 解决方法:提高事务隔离级别,使用 “读已提交” 及以上隔离级别 。比如在 MySQL 中,可将事务隔离级别设置为 “读已提交”(Read Committed),确保事务只能读取已提交的数据。

幻读

  • 定义:在一个事务内,相同的查询多次执行,结果集数量却不同(主要因其他事务新增或删除数据导致) 。比如事务 A 查询满足条件的一批数据,事务 B 在期间插入满足条件的新数据并提交,事务 A 再次查询时就会多读到新插入的数据,仿佛出现 “幻觉”。
  • 危害:破坏事务一致性,影响基于查询结果的业务逻辑 。比如统计库存商品数量时,幻读会使统计结果不准确,影响后续采购、销售等决策。
  • 解决方法:使用更严格的隔离级别,如 “可串行化”(Serializable) ,或者利用行级锁、多版本并发控制(MVCC)等机制。在 InnoDB 引擎的可重复读隔离级别下,通过 MVCC 技术在一定程度上解决幻读问题。

可重复读

  • 定义:一个事务多次读取同一数据时,在事务执行期间,其他事务不能对该数据进行修改(包括读写操作),保证同一事务内多次读取结果一致 。比如事务 A 多次读取某条订单数据,在事务 A 结束前,其他事务无法修改这条订单数据。
  • 作用:防止脏读、不可重复读 ,保证事务内数据的一致性和稳定性,让事务在读取数据时不受其他事务干扰。
  • 实现原理:以 MySQL 的 InnoDB 引擎为例,通过 MVCC 技术实现,在事务开始时创建一致性读视图(快照),后续读操作基于该快照获取数据 。

相关文章:

  • 反序列化漏洞2
  • 数据结构(七)---链式栈
  • 力扣HOT100之链表:23. 合并 K 个升序链表
  • ComfyUI for Windwos与 Stable Diffusion WebUI 模型共享修复
  • JavaScript 中 undefined 和 not defined 的区别
  • 【深度学习】多头注意力机制的实现|pytorch
  • 生物医学AI的特种算力需求:冷冻电镜数据处理中的GPU加速方案
  • GIS开发笔记(16)解决基于osg和osgearth三维地图上添加placeNode图标点击不易拾取的问题
  • UML 活动图详解之小轿车启动活动图分析
  • Dev控件RadioGroup 如何设置一排有N个显示或分为几行
  • 在Linux中,使用IO标准库进行读写操作。
  • 塔能合作模式:解锁工厂能耗精准节能新路径
  • Flutter 泛型 泛型方法 泛型类 泛型接口
  • 《原神/星穹铁道私服怎么建?内网穿透+本地调试完整指南》
  • 游戏服务器不加防护能活多久?
  • 《明解C语言入门篇》读书笔记四
  • pytorch写张量pt文件,libtorch读张量pt文件
  • log4cpp 使用指南
  • OpenCV 图形API(66)图像结构分析和形状描述符------将一条直线拟合到三维点集上函数fitLine3D()
  • linux用户管理
  • 上海第三家“胖永辉”在浦东开业,设立了外贸产品专区
  • 央行回应美债波动:单一市场、单一资产变动对我国外储影响总体有限
  • “中国游”带火“中国购”,“即买即退”让外国游客购物更丝滑
  • 加拿大驾车撞人事件遇难人数升到11人
  • 央视曝光假进口保健品:警惕!保税仓发货不等于真进口
  • 苏迪曼杯即将在厦门打响,国羽向创纪录的14冠进军