mysql的锁

2023-10-30

锁机制用于管理对共享资源的并发访问;用来实现事务的隔离级别

锁类型

共享锁和排他锁都是行级锁;MySQL当中事务采用的是粒度锁;针对表(B+树)、页(B+树叶子
节点)、行(B+树叶子节点当中某一段记录行)三种粒度加锁;

共享锁(S)可理解为读锁

事务读操作加的锁;对某一行加锁;
在 SERIALIZABLE 隔离级别下,默认帮读操作加共享锁;
在 REPEATABLE READ 隔离级别下,需手动加共享锁,可解决幻读问题;
在 READ COMMITTED 隔离级别下,没必要加共享锁,采用的是 MVCC;
在 READ UNCOMMITTED 隔离级别下,既没有加锁也没有使用 MVCC;

排他锁(X)可理解为写锁

事务删除或更新加的锁;对某一行加锁;
在4种隔离级别下,都添加了排他锁,事务提交或事务回滚后释放锁;

意向锁

意向共享锁和意向排他锁都是表级别的锁;

意向锁是一种不与行级锁冲突表级锁,是由存储引擎自己维护的,无法由用户操作。

意向共享锁(IS)

事务有意向对表中的某些行加共享锁

意向排他锁(IX)

事务有意向对表中的某些行加排他锁

各种锁之间的兼容性(特指表锁)

 为什么需要意向锁?

我们可以看出,意向锁的兼容性里面,意向锁之间是相互兼容的,也就是说相互之间不会阻塞对方获取锁。但是我们发现意向锁和其他锁除了意向读锁和读锁是兼容,其他都互斥

 假设情况:事务A获得表1的行排他锁

若:事务B想获得表1的表排他锁,则需要做以下:

1、判断表1是否有事务获得排他锁

2、判断每一行是否有行排他锁

而步骤2很慢,所以,就需要有一种机制,来加速这个过程。

现在的过程是:事务A获取表1的行排他锁之前,同时持有表1的表意向排他锁

若:事务B想获取表1的表排他锁,发现A已经持有了表的意向排他锁,所以就知道了至少有事务持有了表锁或者行锁,就无需再检测行锁,这就是意向锁的作用。

注意,意向锁只会与表级的排他锁/共享锁有互斥关系,跟行级的排他锁/共享锁之间没有互斥关系。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysql的锁 的相关文章

随机推荐

  • 项目中没有 requirements.txt

    项目下创建一个文件 autoinstall py 复制下面的代码 在项目最开始加入import autoinstall 直接运行项目即可 import sys import os from importlib import import m
  • 《机器学习有意思! 01》- 世界上最简单的机器学习入门

    本文首发于https jizhi im blog post ml is fun 01 你是否也曾听人们谈起机器学习但是只有一个朦胧的概念 你是否厌倦了在同事的高谈阔论中颓然欲睡 此诚求变之机 本教程适合所有对机器学习感到好奇 却不知从何下手
  • js的垃圾回收机制

    js 垃圾回收机制 GC 1 GC garbage collection js具有 自动 垃圾回收机制 即执行环境会负责管理代码执行过程中使用的内存 2 GC会定期 周期性的 找出那些不再继续使用的变量 然后释放其内存 3 不再使用的变量即
  • MySQL之explain 的type列 & Extra列

    explain 可以分析 select 语句的执行 即 MySQL 的 执行计划 一 type 列 MySQL 在表里找到所需行的方式 包括 由左至右 由最差到最好 All index range ref eq ref const syst
  • QT 基础布局类总结

    文章目录 系列文章目录 前言 一 水平布局 二 垂直布局 三 网格布局 总结 前言 1 水平布局 垂直布局 网格布局均放置于QGroupBox中 2 继承QWidget类 在构造函数中调用setLayout 函数 即可完成布局 一 水平布局
  • 经典面试智力题200+题和解答

    招聘时期到了 总少不了需要准备智力题 考来考去大多是各种旧题 本来是考智力的事情 现在几乎已经变成了题海战术的考试 所以我们也不能在这一块落后 学习各种奇巧淫技 扩展一下思路 同时免得笔试面试吃亏 搜集了大量智力题 有些还挺有意思 顺便活跃
  • EnPass+WebDAV(一个跨平台密码管理解决方案)

    使用 EnPass密码管理软件 和 坚果云WebDAV 服务来搭建一个跨平台的密码管理方案 前言 相信很多人仍然处于 一个密码走天下 这一状态 但这种情况在当今互联网时代无异于裸奔 各种服务器漏洞造成的密码泄露 还有 撞库 等连锁反应 所以
  • 如何巧妙拒绝别人,搭配Online有小妙招

    相信很多人都会有拒绝别人的烦恼 一旦开口拒绝 难免会得罪人 如果答应下来 自己又无力帮助 这时往往存在矛盾冲突关系 那么如何解决这个问题呢 搭配Online提醒您要注意巧妙拒绝方面的技巧啦 1 耐心倾听对方的请求 即使心里清楚自己最后要拒绝
  • 新榜

    在过去的一个月中 淄博烧烤的相关话题霸屏网络 这些媒介话题里承载了多少受众的向往与想象 根据2022年淄博市文旅局公开年报 去年 淄博官方就着力融媒体 在抖音 快手等平台创新使用 淄博到底有多牛 主题形式 通过视频内容和文案策划 长效推广淄
  • Simpsons’ Hidden Talents【KMP模板题】

    Homer Marge I just figured out a way to discover some of the talents we weren t aware we had Marge Yeah what is it Homer
  • 区块链的数据是存储在链上,还是在数据库中?(答案是这个问题并不成立,来一起了解一下吧)

    很多人都想了解区块链的数据到底什么时候是存储在链上 什么时候又储存在相应节点的数据库中间呢 今天我们就来解决这个有趣的问题 首先我们必须了解清楚两个概念 区块链数据 链上数据 首先 区块链数据包括区块数据和状态数据两者 区块数据描述的实际是
  • hive分区表详细介绍

    一 什么是分区表以及作用 数据分区的概念以及存在很久了 通常使用分区来水平分散压力 将数据从物理上移到和使用最频繁的用户更近的地方 以及实现其目的 hive中有分区表的概念 我们可以看到分区具重要性能优势 而且分区表还可以将数据以一种符合逻
  • Datalore安装使用教程

    发现一个jetbrain出的好东西 使用体验完爆jupyter notebook以及jupyter lab的软件 就是安装有点复杂 官网写得有点不清楚 这里简单介绍一下 首先他只能在linux运行 其他环境暂时不支持 首先 去https w
  • react简要分析

    一 简介 前段时间看到一个用33行代码就实现了一个非常基本的react代码 感觉还是蛮有趣的 代码如下 其主要实现了两大功能 生成虚拟DOM 根据虚拟DOM渲染出真实的DOM 无注释版 https github com leontrolsk
  • linux下查看物理CPU个数、核数、逻辑CPU个数

    cat proc cpuinfo中的信息 processor 逻辑处理器的id physical id 物理封装的处理器的id core id 每个核心的id cpu cores 位于相同物理封装的处理器中的内核数量 siblings 位于
  • 消息队列中间件 - 详解RabbitMQ6种模式

    RabbitMQ 6种工作模式 对RabbitMQ 6种工作模式 简单模式 工作模式 订阅模式 路由模式 主题模式 RPC模式 进行场景和参数进行讲解 PHP代码作为实例 安装 客户端实现 添加扩展 执行composer phar inst
  • 《计算机网络—自顶向下方法》 Wireshark实验(七):以太网与ARP协议分析

    1 以太网 1 1 介绍 以太网是现实世界中最普遍的一种计算机网络 以太网有两类 第一类是经典以太网 第二类是交换式以太网 使用了一种称为交换机的设备连接不同的计算机 经典以太网 是以太网的原始形式 运行速度从 3 10 Mbps 不等 交
  • 51单片机实战 1 --四个独立按键控制四位数码管

    本文基于普中51开发板 在其例程代码稍加改动而成的 单片机的入门小项目也很益智 启动单片机 四位数码管显示0000 按下s1并松开 显示1000 再按下s1并松开显示2000 连续10次按下并松开s2 数码管显示2100 2200 2300
  • WSL安装图形界面

    效果如下 1 下载并安装VcXsrv 链接如下 https sourceforge net projects vcxsrv 下载完安装一路next即可 或者自行选择安装路径 2 安装桌面环境 安装xfce4 terminalsudo apt
  • mysql的锁

    锁 锁机制用于管理对共享资源的并发访问 用来实现事务的隔离级别 锁类型 共享锁和排他锁都是行级锁 MySQL当中事务采用的是粒度锁 针对表 B 树 页 B 树叶子 节点 行 B 树叶子节点当中某一段记录行 三种粒度加锁 共享锁 S 可理解为