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.mzph.cn/diannao/38897.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每日一题---OJ题:分隔链表

片头 嗨!小伙伴们,大家好!今天我们一起来看看这道题----分隔链表 emmmm,这道题,看描述应该不算太难,我们一起来画一画图呗! 题目读懂了,那么如何破解这道题呢? 思路&…

短视频世界对我温柔以待:成都柏煜文化传媒有限公司

短视频世界对我温柔以待 在繁忙的都市生活中,每个人都在为生活奔波,为梦想努力。而在这个快节奏的时代里,短视频如同一股清流,以其独特的魅力,为我带来了片刻的宁静与温柔。它像是一个无声的朋友,在我疲惫…

(必看图文)Hadoop集群安装及MapReduce应用(手把手详解版)

前言 随着大数据时代的到来,处理和分析海量数据已成为企业和科研机构不可或缺的能力。Hadoop,作为开源的分布式计算平台,因其强大的数据处理能力和良好的可扩展性,成为大数据处理领域的佼佼者。本图文教程旨在帮助读者理解Hadoop集…

Mysql面试合集

概念 是一个开源的关系型数据库。 数据库事务及其特性 事务:是一系列的数据库操作,是数据库应用的基本逻辑单位。 事务特性: (1)原子性:即不可分割性,事务要么全部被执行,要么就…

python 笔试面试八股(自用版~)

1 解释型和编译型语言的区别 解释是翻译一句执行一句,更灵活,eg:python; 解释成机器能理解的指令,而不是二进制码 编译是整个源程序编译成机器可以直接执行的二进制可运行的程序,再运行这个程序 比如c 2 简述下 Pyth…

运维锅总详解RocketMQ

本文尝试从Apache RocketMQ的简介、主要组件及其作用、3种部署模式、Controller集群模式工作流程、最佳实践等方面对其进行详细分析。希望对您有所帮助! 一、Apache RocketMQ 简介 Apache RocketMQ 是一个开源的分布式消息中间件,由阿里巴巴集团开发并…

祝贺《华为战略管理法:DSTE实战体系》被《中国企业家》杂志评为企业家枕边书50本之一(宏观战略类书籍)

祝贺《华为战略管理法:DSTE实战体系》被《中国企业家》杂志评为企业家枕边书50本之一 2024年4月23日(周二)下午13:00,《中国企业家》杂志如期举办“每天都是读书日”线下活动。 《中国企业家》杂志携手商界大咖共同推选50本枕边书…

镭速实现AD域集成助力企业文件安全传输管控

在当今这个信息量爆炸扩张的年代,企业数据宛如一座蕴藏无限价值的宝库,它不仅是企业核心竞争力的载体,也成为了各种潜在风险的聚焦点。随着数字化转型步伐的加快,安全文件传输的管理控制显得尤为重要,它构成了保护企业…

各类排序方法 归并排序 扩展练习 逆序对数量

七月挑战一个月重刷完Y总算法基础题,并且每道题写详细题解 进度:(3/106) 归并排序的思想也是分而治之 归并优点:速度稳定,排序也稳定 排序也稳定(数组中有两个一样的值,排序之后他们的前后顺序不发生变化,我们就说…

专题六:Spring源码之初始化容器BeanFactory

上一篇咱们通过一个例子介绍初始化容器上下文相关内容,并通过两个示例代码看到了Spring在设计阶段为我预留的扩展点,和我们应该如何利用这两个扩展点在Spring初始化容器上下文阶段为我们提供服务。这一篇咱们接着往下看。 老这样子下回到refresh方法上来…

第55期:MySQL 频繁 Crash 怎么办?

社区王牌专栏《一问一实验:AI 版》全新改版归来,得到了新老读者们的关注。其中不乏对 ChatDBA 感兴趣的读者前来咨询,表达了想试用体验 ChatDBA 的意愿,对此我们表示感谢 🤟。 目前,ChatDBA 还在最后的准备…

MSVCR120.DLL丢失的多种修复方法,助你快速解决dll问题

在日常生活和工作中,电脑已经成为我们不可或缺的工具。然而,在使用电脑的过程中,我们常常会遇到一些问题,其中之一就是电脑运行软件时提示找不到msvcr120.dll。如果该文件缺失或损坏,可能会导致依赖它的应用程序无法启…

高优先线程

你开发的时候有么有遇到过一个问题:服务器的一个服务线程过几个小时断连一次,断连之后会马上重连这种情况。这是由于CPU负载较高,线程调度时将处理数据的线程挂起了一段时间导致的。 因此,我有考虑到把cpu的核心进行分散开来,就类…

CesiumJS【Basic】- #042 绘制纹理线(Primitive方式)

文章目录 绘制纹理线(Primitive方式)1 目标2 代码2.1 main.ts3 资源文件绘制纹理线(Primitive方式) 1 目标 使用Primitive方式绘制纹理线 2 代码 2.1 main.ts var start = Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883);var

【剑指Offer系列】68-二叉树的最近公共祖先(哈希)

思路:使用map存储每个节点的父节点,则两个节点的最近公共祖先,即二者的最近父节点 1、中序遍历二叉树(当前节点的下一个节点) 2、记录每个节点的父节点 3、列出p的族谱、q的族谱 4、寻找二者最近的祖先 class Soluti…

微信小程序毕业设计-英语互助系统项目开发实战(附源码+论文)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:微信小程序毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计…

PS系统教程31

调色之色阶 调色与通道最基本的关系通道是记录颜色最基本的信息有些图片可以用通道去改变颜色信息的说明这些图像是比较高级的PS是一款图像合成软件,在合成过程中需要处理大量素材,比如要用这些素材进行抠背景,就要用到图层蒙版以及Alpha通道…

【详解】RV1106移植opencv-mobile库

文章目录 前言一、烧入镜像二、编译项目1.创建项目文件 三、移植四、运行文件五、总结 前言 硬件:瑞芯微Rv1106【Luckfox Pro\Max Pico、网线一根、USB线、串口助手、摄像头 软件:ubuntu 20.4 编译器:arm-rockchip830-linux-uclibcgnueabihf…

人工智能——常用数学基础之线代中的矩阵

1. 矩阵的本质: 矩阵本质上是一种数学结构,它由按照特定规则排列的数字组成,通常被表示为一个二维数组。矩阵可以用于描述一组数据,或者表示某种关系,比如线性变换。 在人工智能中,矩阵常被用来表示数据集…

【单片机与嵌入式】stm32串口通信入门

一、串口通信/协议 (一)串口通信简介 串口通信是一种通过串行传输方式在电子设备之间进行数据交换的通信方式。它通常涉及两条线(一条用于发送数据,一条用于接收数据),适用于各种设备,从微控制…