MySQL-行级锁(行锁、间隙锁、临键锁)

文章目录

  • 1、介绍
  • 2、查看意向锁及行锁的加锁情况
  • 3、行锁的演示
    • 3.1、普通的select语句,执行时,不会加锁
    • 3.2、select * from stu where id =1 lock in share mode;
    • 3.3、共享锁与共享锁之间兼容。
    • 3.4、共享锁与排他锁之间互斥。
    • 3.5、排它锁与排他锁之间互斥
    • 3.6、无索引行锁升级为表锁
  • 4、间隙锁&临键锁的演示
    • 4.1、索引上的等值查询(唯一索引),给不存在的记录加锁时, 优化为间隙锁
    • 4.2、索引上的等值查询(非唯一普通索引),向右遍历时最后一个值不满足查询需求时,next-keylock 退化为间隙锁
    • 4.3、 索引上的范围查询(唯一索引)--会访问到不满足条件的第一个值为止

1、介绍

行级锁,每次操作锁住对应的行数据。锁定粒度最小,发生锁冲突的概率最低,并发度最高。应用在InnoDB存储引擎中。

InnoDB的数据是基于索引组织的,行锁是通过对索引上的索引项加锁来实现的,而不是对记录加的锁。对于行级锁,主要分为以下三类

行锁(Record Lock):锁定单个行记录的锁,防止其他事务对此行进行updatedelete。在RC、RR隔离级别下都支持。
在这里插入图片描述

间隙锁(Gap Lock):锁定索引记录间隙(不含该记录),确保索引记录间隙不变,防止其他事务在这个间隙进行 insert,产生幻读。在RR隔离级别下都支持。
在这里插入图片描述

临键锁(Next-Key Lock)行锁间隙锁组合,同时锁住数据,并锁住数据前面的间隙Gap。在RR隔离级别下支持。
在这里插入图片描述

2、查看意向锁及行锁的加锁情况

select object_schema,object_name,index_name,lock_type,lock_mode,lock_data from performance_schema.data_locks;

3、行锁的演示

在这里插入图片描述

3.1、普通的select语句,执行时,不会加锁

在这里插入图片描述

3.2、select * from stu where id =1 lock in share mode;

在这里插入图片描述

3.3、共享锁与共享锁之间兼容。

在这里插入图片描述

3.4、共享锁与排他锁之间互斥。

在这里插入图片描述

3.5、排它锁与排他锁之间互斥

在这里插入图片描述

3.6、无索引行锁升级为表锁

在这里插入图片描述
在这里插入图片描述

4、间隙锁&临键锁的演示

4.1、索引上的等值查询(唯一索引),给不存在的记录加锁时, 优化为间隙锁

在这里插入图片描述

4.2、索引上的等值查询(非唯一普通索引),向右遍历时最后一个值不满足查询需求时,next-keylock 退化为间隙锁

在这里插入图片描述

4.3、 索引上的范围查询(唯一索引)–会访问到不满足条件的第一个值为止

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/782162.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

离线开发(VSCode、Chrome、Element)

一、VSCode 扩展 使用能联网的电脑 A,在VSCode官网下载安装包 使用能联网的电脑 A,从扩展下载vsix扩展文件 将VSCode安装包和vsix扩展文件通过手段(u盘,刻盘 等)导入到不能联网的离线电脑 B 中 在离线电脑 B 中安装…

计算机网络之无线局域网

1.无线局域网工作方式 工作方式:每台PC机上有一个无线收发机(无线网卡), 它能够向网络上的其他PC机发送和接受无线电信号。 与有线以太网相似,无线局域网也是打包方式发送数据的。每块网卡都有一个永久的、唯一的ID号…

springboot配置扫描生效顺序

文章目录 举例分析项目结构如下noddles-user-backend 两个配置文件noddles-user-job 配置文件noddles-user-server 配置文件问题:server和Job启动时对应加载的数据库配置为哪一个? 总结 在微服务架构中,backend模块会定义一个基础的配置文件,…

java集合(2)

目录 一. Map接口下的实现类 1. HashMap 1.1 HashMap常用方法 2. TreeMap 2.1 TreeMap常用方法 3. Hashtable 3.1 Hashtable常用方法 4.Map集合的遍历 4.1 根据键找值 4.2 利用map中的entrySet()方法 二.Collections类 1.Collections类中的常用方法 三. 泛型 1. 为什…

运维锅总详解系统启动流程

本文详细介绍Linux及Windows系统启动流程,并分析了它们启动流程的异同以及造成这种异同的原因。希望本文对您理解系统的基本启动流程有所帮助! 一、Linux系统启动流程 Linux 系统的启动流程可以分为几个主要阶段,从电源开启到用户登录。每个…

揭秘IP:从虚拟地址到现实世界的精准定位

1.IP地址介绍 1.内网 IP 地址(私有 IP 地址) 内网 IP 地址,即私有 IP 地址,是在局域网(LAN)内部使用的 IP 地址。这些地址不会在公共互联网中路由,因此可以在多个局域网中重复使用。私有 IP 地…

设计模式探索:责任链模式

1. 什么是责任链模式 责任链模式 (Chain of Responsibility Pattern) 是一种行为型设计模式。定义如下: 避免将一个请求的发送者与接收者耦合在一起,让多个对象都有机会处理请求。将接收请求的对象连接成一条链,并且沿着这条链传递请求&…

14-43 剑和诗人17 - ActiveRAG之主动学习

​​​​​ 大型语言模型 (LLM) 的出现开启了对话式 AI 的新时代。这些模型可以生成非常像人类的文本,并且比以往更好地进行对话。然而,它们在仅依赖预训练知识方面仍然面临限制。为了提高推理能力和准确性,LLM 需要能够整合外部知识。 检索…

文件存储的方法一

文章目录 概念介绍实现方法示例代码 我们在上一章回中介绍了"如何实现本地存储"相关的内容,本章回中将介绍如何实现文件存储.闲话休提,让我们一起Talk Flutter吧。 概念介绍 我们在上一章回中介绍的本地存储只能存储dart语言中基本类型的数值…

ffmpeg图片视频编辑器工具的安装与使用

title: ffmpeg图片视频编辑器工具的安装与使用 tags: [ffmpeg, 图片, 音频, 视频, 工具, 流媒体] categories: [工具, ffmpeg] FFmpeg是一个开源的命令行工具,广泛用于处理视频和音频文件,包括转换格式、剪辑、混流、解码、编码等。以下是一些基本的FFmp…

Zabbix 的部署和自定义监控内容

前言 一个完整的项目的业务架构包括 客户端 -> 防火墙 -> 负载均衡层(四层、七层 LVS/HAProxy/nginx) -> Web缓存/应用层(nginx、tomcat) -> 业务逻辑层(php/java动态应用服务) -> 数据缓存/持久层(r…

智慧水利的变革之路:如何通过大数据、物联网和人工智能构建高效、智能、可持续的水利管理新模式

目录 一、引言:智慧水利的时代背景与意义 二、大数据:水利管理的数据基石 (一)数据收集与整合 (二)数据分析与挖掘 三、物联网:水利管理的感知神经 (一)智能感知与监…

Git 操作补充:cherry-pick、变基

1. 挑选提交合并 git cherry-pick 对于多分支的代码库,将代码从一个分支转移到另一个分支是一种常见的需求,这可以分成两种情况:一种情况是,你需要另一个分支的所有代码变动,那么就采用 git merge;另一种情…

【Unity2D 2022:UI】制作角色血条

一、创建血底UI 1. 创建画布(Canvas) 2. 在画布上添加血底图像(Image)子物体 二、编辑血底UI 1. 将血底图片拖入源图像(Source Image)中 2. 点击设置为图片的原大小(Set Native Size&#x…

算法重新刷题

基础算法 前缀和 一维前缀和 [USACO16JAN] Subsequences Summing to Sevens S - 洛谷 这一题主要是需要结合数学知识来求解&#xff0c; #include <iostream> #include <cstring> #include <cstdio> #include <algorithm>using namespace std;con…

java花店管理系统eclipse开发mysql数据库

1 绪论 1.1 系统开发目的 随着人们物质生活水平和经济水平的不断提高&#xff0c;室内绿化布置、家庭园艺装饰、礼仪鲜花等日益受到重视和青睐&#xff0c;以及送鲜花给亲朋好友来表达自己的情谊。传统的花店对于信息的管理的主要方式是基于文本、表格等纸质手工处理&#xf…

【经验篇】Spring Data JPA开启批量更新时乐观锁失效问题

乐观锁机制 什么是乐观锁&#xff1f; 乐观锁的基本思想是&#xff0c;认为在大多数情况下&#xff0c;数据访问不会导致冲突。因此&#xff0c;乐观锁允许多个事务同时读取和修改相同的数据&#xff0c;而不进行显式的锁定。在提交事务之前&#xff0c;会检查是否有其他事务…

mac M1安装 VSCode

最近在学黑马程序员Java最新AI若依框架项目开发&#xff0c;里面前端用的是Visual Studio Code 所以我也就下载安装了一下&#xff0c;系统是M1芯片的&#xff0c;安装过程还是有点坑的写下来大家注意一下 1.在appstore中下载 2.在系统终端中输入 clang 显示如下图 那么在终端输…

【Linux进程】命令行参数 环境变量(详解)

目录 前言 1. 命令行参数 什么是命令行参数? 2. 环境变量 常见的环境变量 如何修改环境变量? 获取环境变量 环境变量的组织方式 拓展问题 导入环境变量 3. 本地变量* 总结 前言 在使用Linux指令的时候, 都是指令后边根命令行参数, 每个指令本质都是一个一个的可执行程…

JAVA集合框架、CAS、AQS

目录 一、java 的集合框架有哪些? 二、说-下 ArrayList 和 LinkedList? 三、HashSet和TreeSet的区别? 四、HashMap 的数据结构是什么? 五、CAS机制 六、AQS理解 一、java 的集合框架有哪些? Collection 是 Java 集合框架中的一个根接口&#xff0c;位于 java.util 包中。它…