【mysql】-【锁】

news/2024/10/18 0:27:07/

文章目录

  • 概述
  • MySQL并发事务访问相同记录
    • 读-读情况
    • 写-写情况
    • 读-写或写-读情况
    • 并发问题的解决方案
  • 锁的不同角度分类

概述

事务的隔离性由这章讲述的锁来实现。
请添加图片描述

MySQL并发事务访问相同记录

并发事务访问相同记录的情况大致可以划分为3种:

读-读情况

读-读情况,即并发事务相继 读取相同的记录 。读取操作本身不会对记录有任何影响,并不会引起什么问题,所以允许这种情况的发生。

写-写情况

写-写情况,即并发事务相继对相同的记录做出改动。在这种情况下会发生脏写的问题(事务一、事务二各自开启一个事务,查询某条记录,结果为1,然后事务一将结果改为2,事务二将结果改为3,然后事务一commit,事务二rollback了,此时数据库的结果为1,这就是脏读),任何一种隔离级别都不允许这种问题的发生。所以在多个未提交事务 相继对一条记录做改动时,需要让它们 排队执行 ,这个排队的过程其实是通过 锁 来实现的。这个所谓 的锁其实是一个 内存中的结构 ,在事务执行前本来是没有锁的,也就是说一开始是没有 锁结构 和记录进 行关联的,如图所示:
请添加图片描述
当一个事务想对这条记录做改动时,首先会看看内存中有没有与这条记录关联的 锁结构 ,当没有的时候 就会在内存中生成一个 锁结构 与之关联。比如,事务 T1 要对这条记录做改动,就需要生成一个 锁结构 与之关联:
请添加图片描述
锁结构与事务相关,有几个事务来操作数据,就有几个锁结构
请添加图片描述
请添加图片描述
请添加图片描述
小结几种说法:

  1. 不加锁:意思就是不需要在内存中生成对应的 锁结构 ,可以直接执行操作。
  2. 获取锁成功,或者加锁成功:意思就是在内存中生成了对应的 锁结构 ,而且锁结构的 is_waiting 属性为 false ,也就是事务 可以继续执行操作。
  3. 获取锁失败,或者加锁失败,或者没有获取到锁:意思就是在内存中生成了对应的 ,不过锁结构的 属性为 true ,也就是事务 需要等待,不可以继续执行操作。

读-写或写-读情况

读-写 或 写-读 ,即一个事务进行读取操作,另一个进行改动操作。这种情况下可能发生 脏读 、 不可重复读 、 幻读 的问题。各个数据库厂商对 SQL标准 的支持都可能不一样。比如MySQL在 REPEATABLE READ 隔离级别上就已经解决了 幻读 问题。

并发问题的解决方案

怎么解决脏读、不可重复读、幻读这些问题呢?其实有两种可选的解决方案:

  1. 方案一:读操作利用多版本并发控制(MVCC ,下章讲解),写操作进行加锁。
    请添加图片描述

普通的SELECT语句在READ COMMITTED和REPEATABLE READ隔离级别下会使用到MVCC读取记录。

  1. 在 READ COMMITTED 隔离级别下,一个事务在执行过程中每次执行SELECT操作时都会生成一 个ReadView,ReadView的存在本身就保证了 事务不可以读取到未提交的事务所做的更改 ,也就 是避免了脏读现象;
  2. 在 REPEATABLE READ 隔离级别下,一个事务在执行过程中只有 第一次执行SELECT操作 才会 生成一个ReadView,之后的SELECT操作都 复用 这个ReadView,这样也就避免了不可重复读 和幻读的问题。
  1. 方案二:读、写操作都采用 加锁 的方式。
    请添加图片描述

小结对比发现:

  1. 采用MVCC方式的话,读-写操作彼此并不冲突,性能更高
  2. 采用加锁方式的话, 读-写操作彼此需要排队执行,影响性能。

一般情况下我们当然愿意采用MVCC来解决读-写操作并发执行的问题,但是业务在某些特殊情况 下,要求必须采用加锁的方式执行。下面就讲解下MySQL中不同类别的锁。

锁的不同角度分类

锁的分类图,如下:
请添加图片描述


http://www.ppmy.cn/news/802446.html

相关文章

电容笔用什么品牌?电容笔10大品牌排行榜

尽管苹果公司的原装电容笔使用起来非常的流畅,非常的方便,但是它的价格却非常昂贵,这让很多学生党望而却步,还有这款电容笔的重量也不轻,长时间使用手会感觉疲劳。如果是来学习的,那就未必买如此贵的电容笔…

电容笔和触控笔哪个好?2022年电容笔十大品牌排行榜

在网络办公、在线教育等方面,电容笔再次成为全球的热点。我们到底需不需要一支电容笔?其实我们可以考虑使用平替电容笔。一款一二百块钱的平替电容笔,用来日常作画、做笔记,绝对是一笔划算的买卖。接下来,我会给大家介…

双十二好用电容笔怎么选?十大电容笔知名品牌

现在的电容笔,已经有了更多的牌子,尽管Apple Pencil性能不错,但售价太高,一般没足够预算的人们,根本就买不到。目前市场上有许多平替电容笔,它们可以替代苹果公司的电容笔。下面,我会给大家推荐…

调研分析-全球与中国电子阀控制器市场现状及未来发展趋势

根据QYR(恒州博智)的统计及预测,2021年全球电子阀控制器市场销售额达到了 亿美元,预计2028年将达到 亿美元,年复合增长率(CAGR)为 %(2022-2028)。地区层面来看&#xff0…

雅虎重组广告销售团队 依然未任命新主管

据allthingsd报道,雅虎周一宣布,正在重组广告销售队伍,但依然没有任命新的广告销售主管。自从3月中旬乔安妮布拉德福德(Joanne Bradford)辞职后,该职位就一直空缺。 事实上,雅虎美洲区总裁希拉…

leetcode每日一题——45.跳跃游戏II(面试经典150题)

一、题目描述与要求 45. 跳跃游戏 II - 力扣(LeetCode) 题目描述 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以…

期刊论文插入参考文献(Word尾注插入法,简单适用)

运用插入尾注的方法来插入参考文献比较简单,适用于我们写期刊文献。在word中可以通过双击标注到指定参考文献位置,或者双击参考文献自动定位到文中引用的地方,非常方便。 ① 打开word,指定需要添加参考文献的地方,选择…

软考每周进展 2023.07.05 周三 ~ 07.09 周日

文章目录 一、07.05 周三1.1) 文件系统 二、07.07 周五2.1)文件存储设备管理 三、07.08 周六2.1) 海明码 四、07.09 周日 一、07.05 周三 1.1) 文件系统 题目: 分析: 知识点 单个文件的最大长度是&#…