当前位置:网站首页>MySQL 与InnoDB 下的锁做朋友 (四)行锁/记录锁
MySQL 与InnoDB 下的锁做朋友 (四)行锁/记录锁
2022-08-02 21:56:00 【51CTO】
前言
正文
今天我们将要认识这位朋友是 行锁,而这个行锁 我想叫他 行记录锁。
他和另外两位朋友,临键值锁、间隙锁 ,都是 行锁的实现方式。
行锁是建立在索引上的。
行记录锁当然也是了, 他是建立在当行记录上的 排他锁。
开始实战演示:
表数据准备:
user表(id主键索引,其余无索引):
1. 模拟A事务 查询 id =1 的数据(注意使用for update 触发行锁),故意查询完不提交事务:
2.模拟B事务,也查询id=1的数据 :
此时,发现无法查询出数据,因为id=1这行数据, 已经上了行记录锁 ,所以我们可以查看确实存在一个事务在等待锁资源:
如果我们一直让A事务不提交事务,也就是不释放锁资源,那么B事务就会一直等待,直到超时:
同样,A事务依然不提交,此时执行C事务来更新id=1的行数据,同样也是处于等待锁资源状态:
以上情况都是属于,排他锁之间的写写互斥(行记录锁 record锁属于排他锁一种实现方式)。
那么依然 A事务不提交事务,还坚持不释放锁资源, 执行事务D 查询id=1的数据(使用共享读锁S ):
可以看到依然是处于等待锁资源状态,因为 排他锁一旦上了,是写读互斥的。
我们在这个系列里的(二)讲过跟排他锁相关的知识,如果还不清楚,可以移步
MySQL 与InnoDB 下的锁做朋友 (二)共享锁与排他锁
PS:
共享锁(共享读锁) | 排他锁(独占写锁) | |
共享锁(共享读锁) | 可以,兼容,一起读 | 不可以,不兼容,想写得等共享锁没了 |
排他锁(独占写锁) | 不可以,不兼容,上了排他锁,别人啥都不能动 | 不可以,不兼容,上了排他锁,别人啥都不能动 |
行锁简单就介绍到这把。
边栏推荐
- 饥荒联机版Mod开发——制作简单的物品(三)
- go 反射 reflect 包
- 多租户的多种实现方案
- @Transactional 事务调用与生效场景总结
- hi!Don't look at how to SAO gas dye-in-the-wood in MySQL?
- You and I will meet the needs of: how to export the data in a MySQL simple ~!Practical!
- Win10怎么开启自带的游戏录屏功能?
- JS 包装类 Math对象 round max() min() random
- 软件测试到底自学还是报班?
- Yocto系列讲解[实战篇]85 - 制作ubi镜像和自动挂载ubifs文件系统
猜你喜欢
The interviewer asked me: delete library, in addition to run do?
饥荒联机版Mod开发——制作简单的物品(三)
# 医院管理系统完整项目代码以及数据库建表语句分享
Software testing pen questions 1 (with answers)
The only way to go from a monthly salary of 10k to 30k: automated testing
刚安装完win10专业工作站版,系统变量中Path默认值有哪些?重新建一个“PATH”变量名,会覆盖掉原先的“Path”。
若依集成minio实现分布式文件存储
搭建Spark开发环境(第二弹)
如何通过开源数据库管理工具 DBeaver 连接 TDengine
In-depth study TypeScript TypeScript 】 【 class (under)
随机推荐
第十章 时序与延迟
Auto.js实现朋友圈自动点赞
【STM32学习3】DMA基础操作
Abstract Factory Pattern
【TypeScript】深入学习TypeScript类(上)
牛客每日刷题之链表
mysql 错误:The driver has not received any packets from the server.
搭建直播平台,使用node生成验证码图片,并进行验证
JS Date 时间戳 getTune data.parse 倒计时小程序
我用这一招让团队的开发效率提升了 100%!
MySQL删除数据后,释放磁盘空间
JumpServer open source bastion machine completes Loongson architecture compatibility certification
Flink优化及相关
group of people
FastCorrect:语音识别快速纠错模型丨RTC Dev Meetup
最近火爆朋友圈的“广告电商”,核心商业模式是什么,广告收入真实靠谱吗?
JS函数防抖&函数节流及其使用场景
Learn more TypeScript 】 【 TypeScript modular
GameStop NFT 市场分析
Word2Vec词向量训练、使用及可视化操作