什么是MySQL插入意向锁?为什么需要插入意向锁?
Insert Intention Lock,中文我们也称之为插入意向锁。
这个可以算是对我们之前所讲的 Gap Lock 的一个补充,关于 Gap Lock,如果还有小伙伴不懂,可以参考:记录锁、间隙锁与 Next-Key Locks。
1. 为什么需要插入意向锁
我们之前已经有 Gap Lock 了,Gap Lock 可以帮我们在一定程度上解决幻读问题,但是,之前的似乎有点问题。
假设我有如下一张表:
CREATE TABLE `user` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `username` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `age` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `age` (`age`) ) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
id 是主键自增;age 是一个普通索引,现在表中有如下数据:
假设我想执行如下的插入 SQL:
begin; insert into user(username,age) values('wangwu',95);
注意,这个 SQL 执行了但是事务还没有提交。
按照我们之前学习的关于 Gap Lock 的知识分析一下,此时间隙锁的范围是 (89,99),意思是这个范围的 age 都不可以插入。
如果是这样的话,小伙伴们会发现数据插入的效率可就太低了,很容易发生锁冲突,那么怎么办?
我们今天要介绍的插入意向锁就是用来解决这个问题的。
2. 什么是插入意向锁
我们来看看MySQL官网的介绍:
An insert intention lock is a type of gap lock set by INSERT operations prior to row insertion. This lock signals the intent to insert in such a way that multiple TRANSACTIONs inserting into the same index gap need not wait for each other if they are not inserting at the same position within the gap. Suppose that there are index records with values of 4 and 7. Separate transactions that attempt to insert values of 5 and 6, respectively, each lock the gap between 4 and 7 with insert intention locks prior to obtaining the exclusive lock on the inserted row, but do not block each other because the rows are nonconflicting.
大致翻译下一下就是这样:
插入意向锁是一种在 INSERT 操作之前设置的一种间隙锁,插入意向锁表示了一种插入意图,即当多个不同的事务,同时往同一个索引的同一个间隙中插入数据的时候,它们互相之间无需等待,即不会阻塞(要是单纯按照之前间隙锁的理论,必须要等一个间隙锁释放了,下一个事务才可以往相同的间隙处插入数据)。假设有值为 4 和 7 的索引记录,现在有两个事务,分别尝试插入值为 5 和 6 的记录,在获得插入行的排他锁之前,每个事务使用插入意向锁锁定 4 和 7 之间的间隙,但是这两个事务不会相互阻塞,因为行是不冲突的。
这就是插入意向锁。
3. 实践
小伙伴们注意,松哥之前和大家聊 Gap Lock,说过这个是可重复读(REPEATABLE READ)这个隔离级别下特有的产物,那么现在 Insert Intention Lock 是一种特殊的 Gap Lock,当然也是在可重复读这个隔离级别下生效。
接下来我们通过两个个简单的案例来演示一下插入意向锁。
3.1 案例一
我们的表结构以及数据和第一小节一致。
首先我们在会话 A 中,执行如下代码:
现在会话 A 中的事务没有提交。
接下来我们在会话 B 中,也执行一个插入操作:
我们发现会话 B 也可以正常执行,没有发生阻塞。
这说明,两个插入意向锁之间是兼容的,可以共存的。
3.2 案例二
我们再来看一个不兼容的例子。
首先在会话 A 中执行如下 SQL 查询 age 大于 80 的记录,并添加排他锁:
接下来在会话 B 中,执行如下代码插入一行数据:
小伙伴们看到,这个操作会被阻塞!阻塞的原因在于,插入意向锁和排他锁之间是互斥的。
趁着发生阻塞的这会,在会话 C 中,我们通过在前面文章中所使用的 show engine innodb statusG 指令,来查看下加锁的情况,重点看 TRANSACTION 节点:
在输出的内容中,红色框选中的地方,清楚的表明了插入意向锁的存在。
4. 小结
总结一下:
插入意向锁虽然名字中有意向二字,但实际上是一个特殊的间隙锁。
插入意向锁之间不互斥。
插入意向锁和排他锁之间互斥。
好啦,有问题欢迎留言讨论。
相关推荐:
最新新闻:
- 什么是MySQL插入意向锁?为什么需要插入意向锁?
- 什么是VPN?使用VPN违法吗?
- 如何禁止数据写入移动存储设备(U盘)?
- 如何修复DNS服务器无响应问题?DNS服务器无响应修复方法
- DNS服务器怎么配置?DNS服务器配置方法
- 一行JAVA代码如何运行起来?JAVA代码运行方法
- SQL Server使用脚本实现自动备份
- NodeJS堆溢出的原因 NodeJS堆溢出解决办法
- 什么是PMI指数?PMI如何影响股市?
- 华硕电脑键盘驱动怎么重新安装?电脑键盘驱动安装方法
- SecureCRT安装及破解 SecureCRT简介
- SecureCRT知识介绍 SecureCRT怎么修改会话缓存大小?
- 怎么修改hosts文件?系统Hosts文件原理和应用
- 如何修改hosts文件?hosts文件修改方法
- 什么是Minio?如何搭建Minio集群?
- 谷歌GMS是什么?谷歌GMS概述
- 去中心化是什么意思?去中心化理由有哪些?
- 新能源汽车成为焦点!CES 2023展前新品盘点
- 环球时讯:微信红包升级:红包封面动起来了
- 环球热文:外媒曝亚马逊将大裁17000人 或是大型科技公司最大规模裁员
- 天天微资讯!国产屏崛起!郭明錤:京东方或超三星成iPhone最大的显示器供应商
- 超高刷新率!外星人推出500Hz电竞显示器|世界观天下
- 《吸血鬼:幸存者》2023年将推出更多DLC
- 毁灭者男星:《银河护卫队3》将是我最后一次饰演该角色:今日报
- 国产饮料霸主被外资「杀死」:曾年销20万吨-焦点报道
- 许鞍华回顾与汤唯合作:彼此都不满意 很遗憾
- 首发499元 限量2000套 仙剑官方竟然推出复刻版Windows 98电脑
- 观天下!LG新款Gram Ulstraslim 笔记本发布 轻至998克
- 四大系列 一分钟带来你全方位了解移动版13代酷睿|即时焦点
- 每日观察!iPhone 14 Pro产能恢复了 春节将是生产高峰
- 性能3倍于RTX 3090Ti RTX 4070Ti正式发布 6499元起-世界信息
- 【世界报资讯】Meta在欧洲再遇挫!“定向广告”被罚款超4亿美元,勒令业务模式整改
- 权游二丫本是电影版《最后的生还者》艾莉人选
- 外星人推出M18笔记本:高配24核心i9 可塞9TB硬盘|动态焦点
- 《原子之心》导演称游戏优化好 三核设备也能玩
- 微软对Win7、Win8.1停止安全更新 你受影响了吗? 天天播报
- Win11 22H2又出新Bug:文件管理器随机“突然出现”-全球热门
- 环球今日讯!苹果被爆新一代Apple Watch Ultra将配备micro-LED显示屏,或2024年推出
- CES 2023:外星人推出24.5寸500Hz IPS电竞显示器
- CES 2023:雷蛇预告灵刃系列推出16/18英寸游戏本_当前热议
- 《潜行者:切尔诺贝利阴影》虚幻5自制测试版推出 环球今头条
- 分析师:任天堂新款主机将于2024年发布:环球观焦点
- 【环球新视野】第三人称卡通风冒险《WHALIEN》1月24日登陆PC 新预告发布
- CES:ROG发布全系新品笔记本 i9处理器+4090显卡旗舰配置问鼎性能巅峰
- 猛男紫?戴尔新G15配色非常吸睛_世界观热点
- 为了多赚几个点,这批百亿私募“开年”忙出海 简讯
- 天天速读:最高正收益5%,银行权益理财去年业绩比肩百亿私募?方法出人意料
- 快看:商务部:每人每年仅可出售两辆二手车
- 郭明錤:京东方将成为iPhone 15屏幕最大供应商
- 今日上午10:00首销 摩托罗拉moto G53官网正式开售
- 新动态:分析师称NS继任机型将于2024年推出 NS不会有Pro款
- 真的这么费电?Xbox玩家收到的圣诞礼物是一箱电池
- 全球快讯:《寂静岭2:重制版》将忠实地坚持传统故事规范
- 全球热文:华硕发布2023全新笔记本 最高搭载RTX 4090
- 环球头条:三款性价比PCIe 4.0 SSD对比测试,买新不买旧?
- 每日速读!一加11发布3999元起:2K高刷屏 12G起步
- 一加11发布:3999元 号称4年后还流畅|焦点简讯
- 《鹅鸭杀》移动端预约开启 官方正在寻找国内发行商
- 优酷回应会员仅能一部手机登录:保护账号、打击黑产
- 最新消息:放开之后,为什么坐飞机还要戴口罩?
- 今日精选:新年学会的第一件事,“排队和世界告别”
- 全球聚焦:《闪电侠》第九季发布海报 talk侠2月8日迎来最终季
- 《霍格沃茨之遗》变形咒演示 把敌人变成“只因”_热资讯
- 环球动态:香港著名作曲家顾嘉辉去世享年92岁 代表作《上海滩》
- 从1G到5G,20分钟带你回顾手机圈全部趣事-全球要闻
- 一加11搭载三星2K屏 首发随帧变动技术
- 世界百事通!优酷一个账号仅能登录一台手机,优酷回应:协议有明确规定
- 【全球新要闻】优酷会员手机App只能登录一个 国内视频平台体验变差?
- Qi2无线充电标准官宣,iPhone15充电功率有望提升
- 红米K50至尊版对比红米K60:上手后做出了选择!_速看
- 今日快讯:好玩到落泪!万代官方发布《海贼王:时光旅诗》TVCM
- 今日热搜:韩国全球排名力压日本 让韩网友兴奋:日本网友吐槽除了三星还有啥
- 全球即时看!贾跃亭的法拉第未来重返2023年CES FF91完成升级
- 2022年度回顾:市场动荡之年,哪类资产笑到了最后?
- 脑中之脑:当动物脑中移植了人类神经元 每日动态