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

我们来学mysql -- 事务并发之不可重复读(原理篇)

事务并发之不可重复读

  • 题记
  • 不可重复读
  • 系列文章

题记

  • 在《事务之概念》提到事务对应现实世界的状态转换,这个过程要满足4个特性
  • 这世界,真理只在大炮射程之类,通往和平的道路,非“常人”可以驾驭
  • 一个人生活按部就班,人多起来,难免鸡飞狗跳
  • 同理现实世界的状态转换映射到数据库,满足4个特性也非一帆风顺
  • 数据库江湖,一个事务任我行,两个事务南北双雄,多事务江湖大乱
  • 接下来便是并发事务,不可重复读的问题

不可重复读

  • 一个例子

    • 在2225年的一天,一条时空裂缝被人为打开,一个身影窜入其中消失不见
    • 时间来到2025年6月7号,地点是一所学校的考场中
    • 正在进行一场没有硝烟的战争
    • 消失的身影赫然出现在室外走廊某处隔间,将一副高科技装备摄入某间教室某人视网膜
    • 此时你如同开了天眼一般,全校成绩最优学生试卷跃然眼前,起初你大吃一惊
    • 然后,你奋笔疾书…
    • 一抄到底后,你保持了良好的习惯-再检查一遍( 不交卷 ),不查不知道,发现存在出入很大的答案
    • 当然,这点小插曲不影响你取的了全班第一名,全校第二名,全市前5名,全省前10名的成绩,踏入北大榜上清华

  • 醒一醒

    • 哦, 原来是夏季的一个午后,窗外阵阵蝉鸣,你缓慢睁开眼睛,望着熟悉又陌生的教室…
      在这里插入图片描述
    • 这又是个好例子
    • 咱们关注下那个小插曲 - 你抄了错误的“答案”
    • 那是一道开始没有被检查出来,但是写了一些,做题人选择先易再难跳过此题
    • 但是抄题人的你,奋笔疾书…
    • 这就是你抄了别人未确定的答案,所以才前后不一样

  • 如果一个事务修改了另一个未提交事务读取的数据,便是不可重复读

    • 同样我们用人话来进行翻译
    • 这里让我们来进行模拟
      • 数据库中是参考的答案
      • 读写到试卷中是内存的记录
      • 交卷对应着提交
    • 奋笔疾书完的你,没有交卷(未提交
    • 有题目,被修正了答案(其他事务修改
    • 仔细检查的你查到答案变化(不可重复读
    • 是不是完美的阐述了这个概念…
    • 等一等,此时,有人提出疑问:你未提交啥,你不只是读取吗?你读还不给人家修改?
    • 问的好,真不愧是咱们博文的读者,眼光独到,独立思考
      • 再看下定义 未提交事务读取的数据
      • 它描述的不只是一个读取操作(sql)
      • 是在这个事务的一系列操作中,存在一个读取操作
      • 是这一系列操作的事务还未提交

  • 故事的最后

    • 2225年的某一天,你孙子的孙子,依然穷困潦倒,别人已事业有成,但他孑然一身
    • 原来那个夏天不是一场梦,逆天改命的背后,是你儿子的儿子的儿子,不是亲儿子
      在这里插入图片描述

系列文章

我们来学mysql – 有无事务ID(原理版)
我们来学mysql – 建立索引(原理版)
我们来学mysql – 使用索引(原理版)
我们来学mysql – 索引失效(原理版)
我们来学mysql – 用不上的索引(原理版)
我们来学mysql – 索引上的锁(原理版)
我们来学mysql – 访问方法(原理篇)
我们来学mysql – 连接(原理版)
我们来学mysql – 查询成本之索引选择(原理篇)
我们来学mysql – EXPLAIN之ID(原理篇)
我们来学mysql – 事务之概念(原理篇)
我们来学mysql – 事务并发之脏写(原理篇)
我们来学mysql – 事务并发之脏读(原理篇)
我们来学mysql – 事务并发之幻读(原理篇)

在这里插入图片描述


http://www.mrgr.cn/news/79605.html

相关文章:

  • CSS的2D和3D动画效果
  • 【Python】【Conda 】Conda 与 venv 虚拟环境优缺点全解:如何做出明智选择
  • 【嵌入式linux基础】关于linux文件多次的open
  • vue2 项目中实现动态代理,服务器上通过nginx部署 实现动态代理
  • 【golang】匿名内部协程,值传递与参数传递
  • LBS 开发微课堂|通过openGL ES轻松实现建筑物渲染及动画
  • Text2SQL(NL2sql)对话数据库:设计、实现细节与挑战
  • 【论文阅读】相似误差订正方法在风电短期风速预报中的应用研究
  • NanoLog起步笔记-7-log解压过程初探
  • 【开源】A063—基于Spring Boot的农产品直卖平台的设计与实现
  • Vue3小兔鲜电商项目
  • 【人工智能基础08】卷积神经网络习题:卷积神经网络计算、图像填充、卷积的表达与设计
  • 【优选算法 位运算】位运算算法入门详解:位运算小专题
  • 分布式架构
  • 使用mmdeploy框架C++预测mask并绘制最小外接矩形
  • 排序算法(1):冒泡排序
  • STM32F103 FPGA进行通信方式
  • 第四十六篇 Vision Transformer论文翻译
  • 【开源】A065—基于SpringBoot的库存管理系统的设计与实现
  • java中的抽象类
  • Redis安装和Python练习(Windows11 + Python3.X + Pycharm社区版)
  • 人工智能大模型LLM开源资源汇总(持续更新)
  • 【光电倍增管】-打拿极 PMT
  • SpringBoot3整合Druid数据源
  • 配置新电脑设置的脚本
  • 嵌入式入门Day26