mysql间隙锁

news2024/10/7 8:28:23

 首先我们这里有一个表t,其中的数据如下图所示

 

 注意哈 update由于操作的最新的值,所以是当前读

 另外一个事务插入 8的时候发生锁

而我对id为10的数据进行更新,却不会被锁住

 分析:在执行当前读时,由于id=7不存在,可以理解为在B+树上找7,因此会经过5和10,因此上了nextKey锁(5,10],由于右边界并不等于7,在等值查询上退化成间隙锁(5,10)。

 

 

 当我把语句改为 id=5,此时给唯一索引进行等值查询,退化为行锁,因此插入8不会被阻塞!

 

 

 在当前读下,给非唯一索引加锁的时候,会扫描到第一个不等于索引的值,因此加锁为(0,5】,(5,10),注意锁是加在索引上,因此id上没被加锁!!! 

 进行范围查询,那么加锁范围是多少呢?

插入 8会成功,但是插入10卡住了

 说明加锁了id=10这一行

 而且id=11能够成功加锁,说明mysql用了比较智能的判断,从而使得语句优化成只锁id=10这一行

 改成查10到12之间的

可以看到只锁了id=10的 

 

 

可以看到只锁了两行!!!

 

这次session A用字段c来判断,:在第一次用c=10定位记录的时候,索引c上加了(5,10]这个next-key lock后,由于索引c是非唯一索引,没有优化规则,也就是说不会蜕变为行锁,因此最终sesion A加的锁是,索引c上的(5,10] 和(10,15] 这两个next-key lock。

所以从结果上来看,sesson B要插入(8,8,8)的这个insert语句时就被堵住了。

这里需要扫描到c=15才停止扫描,是合理的,因为InnoDB要扫到c=15,才知道不需要继续往后找了。

 

 

可以看到15被锁住了,20没有被锁住(MYsql改进的bug 2018之前存在)

加锁是(10,15]

 

 id为10可以正常操作,没有被加锁

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

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

相关文章

从0开始写Vue项目-Vue实现数据渲染和数据的增删改查

从0开始写Vue项目-环境和项目搭建_慕言要努力的博客-CSDN博客从0开始写Vue项目-Vue2集成Element-ui和后台主体框架搭建_慕言要努力的博客-CSDN博客从0开始写Vue项目-Vue页面主体布局和登录、注册页面_慕言要努力的博客-CSDN博客从0开始写Vue项目-SpringBoot整合Mybatis-plus实现…

element 下拉框支持搜索并输入

前言 下拉框对于开发来说再常见不过了,也是界面设计中的常用组件,在部分使用场景下,我们需要做到下拉框可以选择的同时,支持搜素和输入,以 element 的下拉框组件为例,当我们同时设置属性让其支持搜素和输入…

ssh的使用

Halo,这里是Ppeua。平时主要更新C语言,C,数据结构算法......感兴趣就关注我吧!你定不会失望。 🌈个人主页:主页链接 🌈算法专栏:专栏链接 我会一直往里填充内容哒! &…

蓝桥杯:统计子矩阵(十三届省赛C++组)

前言: 这道题目是矩阵类型题目经典题型,解题大体思路是前缀和双指针扫描,在我这篇博客中 第十三届蓝桥杯省赛CB组题解_第十三届蓝桥杯b组c答案_正在黑化的KS的博客-CSDN博客 简单提了一下大致解法,今天刷题时又遇到了一个极其相似…

利用Qgis进行WRF中土地利用数据的替换

一、地形数据来源:MCD12Q1_V006 1.1数据介绍: MODIS三级数据土地覆盖类型产品(Land Cover data)是根据一年的Terra和Aqua观测所得的数据经过处理,描述土地覆盖的类型,分辨率为500m。该土地覆盖数据集中包…

jdk、jre、jvm、javase、javaee

JDK Java开发工具包(Java Development Kit)。 开发者使用,里面除了JRE之外还包含java工具。 javac Java源程序编译器,将Java源代码转换成字节码。java Java解释器,直接从字节码文件,又称为类文件。执行Java应用程序的字节代码。…

运维必看|跨国公司几千员工稳定访问Office365,怎么实现?

【客户背景】本次分享的客户是全球传感器领域的领导者,其核心产品为电流和电压传感器,被广泛应用于驱动和焊接、可再利用能源以及电源、牵引、高精度、传统和新能源汽车等领域。 作为一家中等规模的全球化公司,该公司在北京、日本、西欧、东欧…

Spring事务管理(@Transactional使用)-官方原版

全面的事务支持是使用Spring的最令人信服的理由之一。 框架。Spring 框架为事务提供了一致的抽象 具有以下优势的管理:跨不同事务 API(如 Java)的一致编程模型 事务 API (JTA)、JDBC、Hibernate 和 Java Persistence A…

[docker]笔记-网络管理

1、docker网络原理 docker安装完成后,会在宿主机中创建一个虚拟网桥,用于容器之间和容器与外部网络的连接。虚拟网桥通常名称为docker0.可以使用ip link show命令进行查看: 在docker中,各个容器是通过这个docker0的虚拟网桥实现互…

IE自动跳转Edge?教你如何解决

本期看点: 最新windows10系统中, IE浏览器已经无法开启 取而代之是Edge浏览器 windows10默认不在安装IE浏览器 微软不在提供下载链接 而IE确实也存在一些安全隐患 大家非必要尽量避免使用IE浏览器 可选择使用Edge、Chrome、Firefox等 打开IE浏览器方式一&am…

laravel与workerman结合

安装workerman composer require workerman/workerman生成命令 php artisan make:command Workerman<?phpnamespace App\Console\Commands;use Illuminate\Console\Command; use Workerman\Worker;class Workerman extends Command {/*** The name and signature of the …

2022年度商业关键词调研报告(小红书美妆个护)

美妆个护&#xff0c;作为小红书最火热的领域之一&#xff0c;不断塑造流行新趋势&#xff0c;大量品牌在小红书孵化爆品&#xff0c;崛起破圈。回顾2022年&#xff0c;小红书美妆个护领域有哪些热门新趋势呢&#xff1f; 由此&#xff0c;千瓜推出《2022年度商业关键词调研报告…

机器学习-基于KNN及其改进的汉字图像识别系统

一、简介和环境准备 knn一般指邻近算法。 邻近算法&#xff0c;或者说K最邻近&#xff08;KNN&#xff0c;K-NearestNeighbor&#xff09;分类算法是数据挖掘分类技术中最简单的方法之一。而lmknn是局部均值k最近邻分类算法。 本次实验环境需要用的是Google Colab和Google Dr…

ASEMI高压MOS管60R380参数,60R380特征,60R380应用

编辑-Z ASEMI高压MOS管60R380参数&#xff1a; 型号&#xff1a;60R380 漏极-源极电压&#xff08;VDS&#xff09;&#xff1a;600V 栅源电压&#xff08;VGS&#xff09;&#xff1a;20V 漏极电流&#xff08;ID&#xff09;&#xff1a;11A 功耗&#xff08;PD&#x…

Python的PyQt框架的使用-资源文件夹的使用

Python的PyQt框架的使用-资源文件夹的使用一、前言二、Qt Designer加载资源文件三、资源文件的转换一、前言 个人主页: ζ小菜鸡大家好我是ζ小菜鸡&#xff0c;小伙伴们&#xff0c;让我们一起来学习Python的PyQt框架的使用。如果文章对你有帮助、欢迎关注、点赞、收藏(一键三…

win10怎么取消开机密码?电脑小白也可以轻松掌握的3种方法

为了保护隐私&#xff0c;我们大多喜欢给自己的电脑“上锁”&#xff0c;即设置开机密码。有时候&#xff0c;我们想要取消电脑的开机密码&#xff0c;却不知有什么方法可以帮到我们。win10怎么取消开机密码&#xff1f;方法有很多。 比如&#xff1a;通过运行来进入用户账户设…

Golang学习Day1

&#x1f60b; 大家好&#xff0c;我是YAy_17&#xff0c;是一枚爱好网安的小白。本人水平有限&#xff0c;欢迎各位大佬指点&#xff0c;欢迎关注 &#x1f601;&#xff0c;一起学习 &#x1f497; &#xff0c;一起进步 ⭐ 。⭐ 此后如竟没有炬火&#xff0c;我便是唯一的光…

GEE学习笔记 五十一:Fusion Table将在2019年12月3日关闭

刚刚看到的一则消息&#xff0c;Google运行了9年之久的Fusion Table将在2019年12月3日关闭相关服务&#xff0c;同时也就是未来Google Earth Engine&#xff08;GEE&#xff09;上将不会存在Fusion Table这一数据&#xff0c;GEE官方也不再建议用户使用Fusion Table数据。 目前…

anaconda:安装cuda和对应版本的cudnn

复现别人论文的时候经常遇到不同的cuda版本&#xff0c;可以使用anaconda创建虚拟环境&#xff0c;并在不同的虚拟环境中配置对应的cuda版本 1、安装anaconda及虚拟环境使用 Anaconda多个python版本&#xff08;python2.7 & python3.8&#xff09; 2、安装cuda和对应版本…

【机器学习】噪声数据的理解

文章目录一、噪声数据1.1 分箱1.2 回归1.3 聚类1.4 其他二、数据清理作为一个过程2.1 偏差检测2.1.1 使用“元数据”&#xff1a;关于数据的数据2.1.2 编码格式&#xff1a;存在使用不一致、数据表示不一致2.1.3 字段过载2.1.4 唯一性规则2.1.5 连续性规则2.1.6 空值规则2.2 数…