MySQL~详细介绍事务的一个重要特性--隔离性 (解决脏读、不可重复读、幻读)

  • 介绍脏读、不可重复读、幻读

    • 脏读
  • 不可重复读

  • 幻读

  • 如何理解隔离性

  • MySQL的隔离级别

    • read uncommitted
  • read committed

  • repeatable read

  • serializable

  • 在之前的文章中我有详细介绍过什么是数据库索引? 索引的数据结构是什么? 什么是事务? 如果还有不懂点解跳转

MySQL~教你满分回答什么是数据库索引? 索引的数据结构是什么? 什么是事务?

介绍脏读、不可重复读、幻读

============================================================================

脏读


  • 假如一个学校正在考试 学生甲在答题 学生乙在偷瞄 此时甲写了一个答案还没有写完 然后乙就偷看了甲的答案然后写在了自己的试卷上 这是乙的读操作就造成了脏读

  • 用到事务上来说就是 事务A还没有完全提交 事务B就读取了数据 就造成了脏读

  • 如何解决脏读:

  • 给写操作加锁 就是学生甲在答这道题的时候 学生乙不可以看 知道学生甲写完这道题 学生乙才可以看

  • 事务上来说就是在事务A完全提交之前 事务B去读数据就会阻塞 一直阻塞到A提交数据之后 B才能读取数据

  • 引入写加锁 事务的并发程度就降低了 效率降低了 隔离性提高了

不可重复读


  • 还是刚刚那个考试的例子 学生甲在写一道数学大题 学生乙在偷瞄 学生乙偷瞄一眼后 然后赶快将答案写在了自己的卷子上 可是在乙写的时候 甲发现自己有更好的解法就把答案全擦了 重新写了 等到乙再去看第二眼的时候 发现我靠怎么完全不一样了 乙就陷入了迷惑之中 乙这就造成了不可重复读问题

  • 解决方法

  • 再给读加锁 就好比学生乙在偷瞄答案的时候甲是不可以更改的

  • 在事务上说就是事务B在读数据的时候 事务A不能写了 此时也就解决了不可重复读问题

  • 引入读加锁 事务的并发程度就更低了 效率也低了 隔离性就更加高了

幻读


  • 我们给写 和读 都加锁之后解决了脏读和 不可重复读问题 但是还会有幻读问题

  • 幻读就好比 学生乙在偷瞄学生甲的大题 而此时学生甲还在写未完成的题 所以对 学生乙来说 他得到的整张试卷和学生甲还是不一样的

  • 事务上来说就是 同一个事务中 俩次读取到的结果集不一致 虽然读加锁了 读的时候不能改改 但是还是可以增加和删除记录 所以是得到的结果集会不一样

  • 解决方案:

  • 如果要解决这个问题就必须严格的进行串行化执行

如何理解隔离性

======================================================================

  • 隔离性就是让多个事务并发执行时,事务之间不能相互干扰 本质上就是为了线程安全

  • 隔离和并发是相悖的 隔离是为了保证数据的准确 并发是为了提高事务的执行效率

  • 如果多个事务之间的隔离性越强 并发程度就会越低 效率就会降低

  • 如果多个事务之间隔离性越弱 并发执行程度就会越高 效率就会越高

  • 所以为什么要引入隔离性?

虽然俩者是相悖的 但是在不同场景下 对于数据的准确性要求不一样 就可以引入隔离不同的隔离等级 尽可能既提高并发性 有可以保证准确性

MySQL的隔离级别

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618164986)

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值