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

脏读、不可重复读、幻读

一、脏读

A事务读取B事务尚未提交的数据,此时如果B事务发生错误并执行回滚操作,那么A事务读取到的数据就是脏数据。就好像原本的数据比较干净、纯粹,此时由于B事务更改了它,这个数据变得不再纯粹。这个时候A事务立即读取了这个脏数据,但事务B良心发现,又用回滚把数据恢复成原来干净、纯粹的样子,而事务A却什么都不知道,最终结果就是事务A读取了此次的脏数据,称为脏读。

二、不可重复读

事务A在执行读取操作,由整个事务A比较大,前后读取同一条数据需要经历很长的时间 。而在事务A第一次读取数据,比如此时读取了小明的年龄为20岁,事务B执行更改操作,将小明的年龄更改为30岁,此时事务A第二次读取到小明的年龄时,发现其年龄是30岁,和之前的数据不一样了,也就是数据不重复了,系统不可以读取到重复的数据,成为不可重复读。

三、幻读

事务A在执行读取操作,需要两次统计数据的总量,前一次查询数据总量后,此时事务B执行了新增数据的操作并提交后,这个时候事务A读取的数据总量和之前统计的不一样,就像产生了幻觉一样,平白无故的多了几条数据,成为幻读。

四、不可重复读与幻读的区别

(1) 不可重复读是读取了其他事务更改的数据,针对update操作

解决:使用行级锁,锁定该行,事务A多次读取操作完成后才释放该锁,这个时候才允许其他事务更改刚才的数据。

(2) 幻读是读取了其他事务新增的数据,针对insert和delete操作

解决:使用表级锁,锁定整张表,事务A多次读取数据总量之后才释放该锁,这个时候才允许其他事务新增数据。

http://www.lryc.cn/news/251932.html

相关文章:

  • 思维模型 反馈效应
  • 【PyTorch】线性回归
  • 硝烟弥漫的科技战场——GPT之战
  • re:Invent 构建未来:云计算生成式 AI 诞生科技新局面
  • oneApi实现并⾏排序算法
  • 语音芯片的BUSY状态指示功能特征:提升用户体验与系统稳定性的关键
  • Leetcode2661. 找出叠涂元素
  • 免费最新6款热门SEO优化排名工具
  • 绝地求生在steam叫什么?
  • Elasticsearch:什么是大语言模型(LLM)?
  • Kubernetes1.27容器化部署Prometheus
  • fasterxml 注解组装实体
  • 自写一个函数将js对象转为Ts的Interface接口
  • 【数据结构】拆分详解 - 二叉树的链式存储结构
  • Laravel修改默认的auth模块为md5(password+salt)验证
  • OpenStack-train版安装之安装Keystone(认证服务)、Glance(镜像服务)、Placement
  • 【九日集训】第九天:简单递归
  • Prime 1.0
  • Java 如何正确比较两个浮点数
  • Qt 如何操作SQLite3数据库?数据库创建和表格的增删改查?
  • 【Hadoop】分布式文件系统 HDFS
  • 【Python-随笔】使用Python实现屏幕截图
  • Sun Apr 16 00:00:00 CST 2023格式转换
  • 使用mongodb实现简单的读写操作
  • C语言实现Cohen_Sutherland算法
  • MySQL进阶_EXPLAIN重点字段解析
  • 视图层与模板层
  • MySQL数据库——触发器-案例(Insert类型、Update类型和Delete类型)
  • 快速创建桌面端(electron-egg)
  • docker配置redis插件