MySQL中是如何insert数据的

正常insert数据,MySQL并不会显式加锁,而是通过聚簇索引的trx_id索引作为隐式锁来保护记录的。比如两个事务对一个非唯一的索引情况添加,会造成幻读
在这里插入图片描述
但在某些特殊情况下,隐式锁会转变为显式锁

  • 记录之间有间隙锁
  • insert的记录与已有记录的唯一索引冲突

记录之间有间隙锁

每插入一条新记录,都需要看一下待插入记录的下一条记录上是否已经被加了间隙锁,如果已加间隙锁,此时会生成一个插入意向锁,然后锁的状态设置为等待状态(PS:MySQL 加锁时,是先生成锁结构,然后设置锁的状态,如果锁状态是等待状态,并不是意味着事务成功获取到了锁,只有当锁状态为正常状态时,才代表事务成功获取到了锁),现象就是 Insert 语句会被阻塞。
在这里插入图片描述

# 事务 A
mysql> begin;
Query OK, 0 rows affected (0.01 sec)mysql> select * from t_order where order_no = 1006 for update;# 事务 B 插入一条记录
mysql> begin;
Query OK, 0 rows affected (0.01 sec)mysql> insert into t_order(order_no, create_date) values(1010,now());
### 阻塞状态。。。。

可以看到,事务 B 的状态为等待状态(LOCK_STATUS: WAITING),因为向事务 A 生成的 next-key 锁(记录锁+间隙锁)范围(1005, +∞] 中插入了一条记录,所以事务 B 的插入操作生成了一个插入意向锁(LOCK_MODE: X,INSERT_INTENTION),锁的状态是等待状态,意味着事务 B 并没有成功获取到插入意向锁,因此事务 B 发生阻塞。

遇到唯一键冲突

插入失败,会对这条记录上S型锁

  • 如果主键索引重复,插入新记录的事务会给已存在的主键值重复的聚簇索引记录添加 S 型记录锁。
  • 如果唯一二级索引重复,插入新记录的事务都会给已存在的二级索引列值重复的二级索引记录添加 S 型 next-key 锁。(但假设有这么一种情况,目前表里有二级索引id=1~5的数据记录,事务A插入一个id=6,是可以的,不会被阻塞,也没有上显式锁其实,只有隐式锁。但假设事务B想再插入id=6的数据,A对id=6的隐式锁会升级为显式X锁,B此时相当于想申请id=6的S锁,会被阻塞)

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

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

相关文章

二叉树的非递归遍历(详解)

二叉树非递归遍历原理 使用先序遍历的方式完成该二叉树的非递归遍历 通过添加现有项目的方式将原来编写好的栈文件导入项目中 目前项目存在三个文件一个头文件,两个cpp文件: 项目头文件的代码截图:QueueStorage.h 项目头文件的代码&#xff…

如何运用gpt改写出高质量的文章 (1)

大家好,今天来聊聊如何运用gpt改写出高质量的文章 (1),希望能给大家提供一点参考。 以下是针对论文重复率高的情况,提供一些修改建议和技巧: 如何运用GPT改写出高质量的文章 一、引言 随着人工智能技术的飞速发展,自然…

字符串指令集

字符串指令的格式 例子1就成功发送了指令 例子2就是发送的字符串有误 查询当前位置就会在附加信息中返回当前座位的坐标 第一个指令的参数就是闪灯的两个参数 如第一个示例就是10ms On Time 第二个就是Off Time 使用标准库来接收字符串命令 字符串指令的接收 因为一个指令就是…

科技改变旅游,道观漫游可视化:智能化管理助力道观游览

道观漫游可视化是一种通过技术手段实现道观游览的可视化展示方式,让游客能够更加直观地了解道观的历史、文化和建筑特色。 随着旅游业的不断发展,道观漫游可视化已经成为了旅游行业中的一个重要方向,吸引了越来越多的游客前来体验。 道观漫游…

打死都不要进外包,看看我在阿里外包的2年...

我18年毕业于一个普通二本学校,是一个很不出名的小本科。大学期间专业知识也没有去认真的学习,所以毕业的时候就随便找了一份工作,在一个小公司做功能测试。 记得那时候薪资大概是6k左右,因为是在工厂,工作环境很差&a…

《Spring Cloud Alibaba 从入门到实战》理论知识篇

基础知识篇 理论篇 俗话说,没有最好的架构,只有最合适的架构。 微服务架构也是随着信息产业的发展而出现的最有普遍适用性的一套架构模式。 通常来说,我们认为架构发展历史经历了这样一个过程:单体架构 -> SOA 面向服务架构 …

springboot智慧导诊系统源码:根据患者症状匹配挂号科室

一、系统概述 医院智慧导诊系统是在医疗中使用的引导患者自助就诊挂号,在就诊的过程中有许多患者不知道需要挂什么号,要看什么病,通过智慧导诊系统,可输入自身疾病的症状表现,或选择身体部位,在经由智慧导诊…

微型5G智能网关助力打造智能清洁机器人

智能机器人不断融入我们的生活,提供了越来越多样化的服务,例如专用于卫生清洁的机器人,就已经广泛应用于酒店、体育馆、大型商场、写字楼、工地等各种场景,相较于人工,机器人在此类具有高度重复性、劳动量大的工作中具…

C++作业6

以下是一个简单的比喻,将多态概念与生活中的实际情况相联系: 比喻:动物园的讲解员和动物表演 想象一下你去了一家动物园,看到了许多不同种类的动物,如狮子、大象、猴子等。现在,动物园里有一位讲解员&…

用23种设计模式打造一个cocos creator的游戏框架----(五)工厂方法模式

1、模式标准 模式名称:工厂方法模式 模式分类:创建型 模式意图:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。 结构图: 适用于: 1、当一个类不知道它…

failed to install plugin grafana 插件安装失败

升级时忽略plugins 权限问题,导致安装插件失败!调整权限即可

042:el-table表格表头自定义高度(亲测好用)

第042个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下,本专栏提供行之有效的源代码示例和信息点介绍,做到灵活运用。 (1)提供vue2的一些基本操作:安装、引用,模板使…

Shrio 安全框架

目录 前言 1.介绍 2.整合 Shiro 到 Spring Boot 3.Shiro 相关配置 总结 前言 几乎所有涉及用户的系统都需要进行权限管理,权限管理涉及到一个系统的安全。Spring Boot 的安全框架整合方案中还有一个璀璨的明珠:Shrio。 1.介绍 Shiro是一款由Java 编…

信道复用技术

目录 一、频分复用FDM(Frequency Division Multiplexing) 二、波分复用 WDM(Wavelength Division Multiplexing) 三、时分复用TDM(Time Division Multiplexing) 四、统计时分复用 STDM(Statisti…

双通道5V高细分步进电机驱动芯片应用于摇头机,X,Y控制,聚焦控制,CAMERA云台控制等产品上的芯片选型分析

双通道5V高细分步进电机驱动芯片GC6106,GC6107,GC6119,GC6151,GC6236,GC6225,GC6129,电压范围3~5.5V,最大持续电流可达0.6A左右。可应用于摇头机,X,Y控制,聚焦…

基于AIS数据的船舶密度计算与规律研究

参考文献:[1]陈晓. 基于AIS数据的船舶密度计算与规律研究[D].大连海事大学,2021.DOI:10.26989/d.cnki.gdlhu.2020.001129. 谢谢姐姐的文章! 网格化AIS数据 网格化 AIS 数据是处理和分析船舶轨迹数据的一种有效方法,特别是当涉及到密度计算和…

Vue3+Antd实现弹框显示内容并加入复制按钮

使用Vue3antd实现点击弹框出现内容并可复制内容的功能&#xff1a; HTML部分&#xff1a; <a-button type"primary" click"showModel">打开弹框 </a-button><!-- ok 是弹框中确定按钮的操作&#xff0c;cancel 是弹框中取消按钮的操作 --…

Redis数据已经删除了,为什么内存占用还是很高?

Redis数据已经删除了&#xff0c;为什么内存占用还是很高&#xff1f; Redis做了数据删除操作&#xff0c;为什么使用top命令时&#xff0c;还是显示Redis占了很多内存&#xff1f; 没做相关功课的人觉得这个问题有问题&#xff0c;删了数据还说占着内存&#xff0c;面试官不…

【学一点儿前端】真机调试本地公众号网页项目

前言 微信公众号网页开发的真机调试一直是很头疼的事情。 原因一 微信公众号配置的JS安全域名只有三个&#xff0c;一个大中型的公众号这三个JS安全域名都是生产的域名&#xff0c;不可能预留域名用于开发和调试。 原因二 在微信里面只有访问正确的安全域名才能调用wx.config用…

vuepress-----18、图片缩放

图片引入两种方式 地址 # 图片缩放插件 # 实战 md文件引入图片 <img class"zoom-custom-imgs" :src"$withBase(/favicon.ico)" alt"favicon">安装配置插件 vuepress/medium-zoom: {selector: img.zoom-custom-imgs,},效果展示