唯一索引范围查询锁 bug修复了

news2024/11/13 18:45:58

唯一索引范围查询锁 bug修复了

其他资料介绍入下:
image-20230112180547545
session A 是一个范围查询,按照原则 1 的话,应该是索引 id 上只加 (10,15] 这个 next-key lock ,并且因 为 id 是唯一键,所以循环判断到 id=15 这一行就应该停止了。

但是实现上, InnoDB 会往前扫描到第一个不满足条件的行为止,也就是 id=20 。而且由于这是个范围扫 描,因此索引 id 上的 (15,20] 这个 next-key lock 也会被锁上。照理说,这里锁住 id=20 这一行的行为,其 实是没有必要的。因为扫描到 id=15 ,就可以确定不用往后再找了。

验证

版本 8.0.24
在这里插入图片描述

数据准备
在这里插入图片描述
在这里插入图片描述

col1 加了普通索引
在这里插入图片描述
开始验证
按照上述资料锁住范围是 (10,20]
其实值锁住了(10,15]
在这里插入图片描述
在15 到20之间插入数据成功 说明并没有锁住 (15,20]
在这里插入图片描述
插入 14时 发生阻塞
在这里插入图片描述
进行update 语句验证时 只锁住了 15 这一条记录
**加粗样式**

结论:唯一索引范围查询锁 bug修复了,唯一索引范围查询时,插入时是间隙锁,查询时是行索。

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

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

相关文章

生成标题的节点

生成标题的节点目录概述需求:设计思路实现思路分析1.mine 的概述2 mi是否自动计算未来的处理人参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a better result,w…

智能驾驶 车牌检测和识别(一)《CCPD车牌数据集》

智能驾驶 车牌检测和识别(一)《CCPD车牌数据集》 目录 智能驾驶 车牌检测和识别(一)《CCPD车牌数据集》 1. 前言 2.车牌号码说明 3.车牌数据集CCPD (1)车牌数据集CCPD说明 (2&#xff09…

Eclipse调试python

Eclipse调试pythonF5:Step Into 单步调试,跳入函数内部F6:Step Over 单步调试,不跳入函数内部,执行当前代码F7:Step Return 返回到当前函数的尾部,跳转到调用函数的位置F8:Resume 跳…

DDOS渗透与攻防(二)之SYN-Flood攻击

系列文章 DDOS渗透与攻防(一)之拒绝服务攻击概念介绍 SYN-Flood攻击 1.SYN-Flood拒绝服务攻击 (1).攻击协议原理介绍说明_Syn-Flood SYN Flood (SYN洪水) 是种典型的DoS (Denial of Service,拒绝服务) 攻击。效果就是服务器TCP连接资源耗尽,停止响应…

8 种异步实现方式,性能炸裂!

异步执行对于开发者来说并不陌生,在实际的开发过程中,很多场景多会使用到异步,相比同步执行,异步可以大大缩短请求链路耗时时间,比如:发送短信、邮件、异步更新等,这些都是典型的可以通过异步实…

LeetCode动态规划经典题目(九):0-1背包问题

学习目标: 0-1背包问题 学习内容: 9. LeetCode416. 分割等和子集https://leetcode.cn/problems/partition-equal-subset-sum/ 10. LeetCode1049. 最后一块石头的重量 IIhttps://leetcode.cn/problems/last-stone-weight-ii/ 学习产出: 独…

Makefile学习⑦:编译动态链接库和静态库

Makefile学习⑦:编译动态库和静态库 编译链接动态库 动态链接库名词解释: 动态:运行时才去加载,动态加载 链接:指库文件和二进制程序分离,用某种特殊手段维护两者之间的关系 库 :库文件&#…

8、条件语句

目录 一、简单的if条件语句 二、if…else语句 三、if…else if多分支语句 四、switch多分支语句 一、简单的if条件语句 语法如下: 布尔表达式:必要参数,表示最后返回的结果必须是一个布尔值。它可以是一个单纯的布尔变量或常量&#xff…

IntelliJ IDEA 插件推荐

本篇主要统计了一些 Idea 的常用插件 分享一下 感谢作者zzp google-java-format 作用 代码格式化风格。 插件官网 google-java-format - plugin for IntelliJ IDEs | JetBrains 使用说明 插件安装完成后需要到Preferences->Other Settings->google-java-format Set…

供应商管理难点在哪 SRM供应商系统助推企业提升管理水平

在如今,对于需求企业来说,要保证企业内部的正常生产或科研工作等过程的不间断,就需要有一批可靠的供应商定期提供必需的物资供应。而供应商管理的最终目的就是根据采购需求来建立一个稳定可靠的供应商管理队伍,为企业提供高质量的…

【Leetcode每日一题】27. 原地移除元素|神级理解双指针

博主简介:努力学习的预备程序媛一枚~博主主页: 是瑶瑶子啦所属专栏: LeetCode每日一题–进击大厂 目录题目描述题目分析:代码实现补充训练--验证代码实现题目描述 链接: 27. 移除元素 给你一个数组 nums 和一个值 val,你需要 原…

Java开发实现图书管理系统

本文用Java代码实现图书代码管理系统,有些地方可能会有纰漏,希望各位大佬鉴赏!! 文章目录 文章目录 一、Java实现图书管理系统 1.1创建book包 二、创建图书管理系统的操作包 2.1创建Operation接口 三、创建User包 3.1创建User类 四…

并发编程学习(七):线程活跃性:死锁、活锁、饥饿

线程活跃性 是指代码有限,但由于某种原因,导致线程一直未执行完成。 1、死锁 指两个或两个以上的进程(或线程)在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推…

四元数学习笔记(一):初识四元数

1 四元数的定义 1.1 为什么要使用四元数 旋转向量用 9 个量来描述 3 个自由度的旋转,具有冗余性;欧拉角和旋转向量是紧凑的,但是具有奇异性。事实上,我们找不到不带奇异性的向量描述方式。 回忆之前学习过的复数,我…

强化学习笔记:基于策略的学习之策略迭代(python实现)

目录 1. 前言 2. 算法流程 3. 代码及仿真结果 3.1 class PolicyIterationPlanner() 3.2 测试代码 3.3 运行结果 3.3.1 价值估计结果 3.3.2 策略迭代得到的最终策略 1. 前言 在强化学习中,根据是否依赖于(环境的)模型,可以分…

OAK相机与树莓派

编辑:OAK中国 首发:oakchina.cn 喜欢的话,请多多👍⭐️✍ 内容可能会不定期更新,官网内容都是最新的,请查看首发地址链接。 ▌前言 Hello,大家好,这里是OAK中国,我是助手…

机器人中的数值优化之修正阻尼牛顿法

本文ppt来自深蓝学院《机器人中的数值优化》 目录 1 Newtons Method 2 Pratical Newtons Method 1 Newtons Method 当我们引入函数的二阶信息就考虑到了curvature info,这里先对函数进行泰勒展开,取二阶近似,对近似后的函数取最优解&#…

springboot 线程池

为什么要使用线程池 使用线程池之后,不需要频繁的去创建和销毁线程(比如项目中手动创建线程,new Thread 类,我们可以把创建和销毁的线程的过程去掉),从而让线程得到重复的使用。并且可以对线程进行统一的管…

手把手教你用 Python 搭建一个图像分类器

深度学习是使用人工神经网络进行机器学习的一个子集,目前已经被证明在图像分类方面非常强大。 尽管这些算法的内部工作在数学上是严格的,但 Python 库(比如 keras)使这些问题对我们所有人都可以接近。 在本文中,我将介绍一个简单的图像分类…

机器人中的数值优化之最速下降法

本文ppt来自深蓝学院《机器人中的数值优化》 目录 1 迭代方向 2 步长的选择 3 Armijo condition 4 非精确线搜索的优势 1 迭代方向 梯度方向是函数上升最快的方向,而负梯度方向则是函数下降最快的方向,因此最速下降法就是以负梯度方向为迭代方向…