InnoDB行锁,如何锁住一条不存在的记录?

2018 年 8 月 9 日 架构师之路

InnoDB,5项最佳实践,知其所以然?》发布后,不好同学留言希望讲讲MySQL的InnoDB行锁机制。要细聊MySQL的行锁,难以避免的要从事务的四种隔离级别说起。

 

四种隔离级别,又脱不开聊读脏,不可重复读,读幻象等问题。

 

事务隔离级别,行锁机制等都比较垂直,应用开发中大部分同学都用不到,不确定是否大部分朋友都感兴趣。


今天,先抛出一个问题,如果大家确定对这类话题感兴趣的话,后续我花时间细聊这一系列问题。

 

MySQL默认的事务隔离级别是 Repeated Read (RR),假设使用的存储引擎是InnoDB,在这个隔离级别下:

(1)读取到数据,都是其他事务已提交的数据

(2)同一个事务中,相同的连续读,得到的结果应该是相同的

(3)不会出现insert幻象读

 

假设有数据表:

t(id int PK, name);


假设目前的记录是:

10, shenjian

20, zhangsan

30, lisi

 

Case 1

事务A执行,并且处于未提交状态:

update t set name=’a’ where id=10;

 

事务B执行:

update t set name=’b’ where id=10;

因为事务A在PK id=10上加了行锁,因此事务B会阻塞。

 

Case 2

事务A先执行,并且处于未提交状态:

delete from t where id=40;

事务A想要删除一条不存在的记录

 

事务B后执行:

insert into t values(40, ‘c’);

事务B想要插入一条主键不冲突的记录

 

问题1事务B是否阻塞

问题2:如果事务B阻塞,锁如何加在一条不存在的记录上呢?

问题3:事务的隔离级别,索引类型,是否对问题1和问题2有影响呢?


如果大家对这些问题感兴趣,后续我花时间深入梳理逻辑,画图细聊。

如果不感兴趣,我换数据库应用层架构的话题。


是不是很有意思的一个问题?

猜猜InnoDB的行锁是怎么做到的?


相关文章:

InnoDB,5项最佳实践,知其所以然?

登录查看更多
0

相关内容

一个开源的关系型数据库,开发者为瑞典 MySQL AB 公司。在2008年1月16号被 Sun 公司收购。而2009年,SUN 又被 Oracle 收购.目前 MySQL 被很多互联网企业所使用。有体积小、速度快、总体拥有成本低,开放源码等优点
专知会员服务
142+阅读 · 2020年6月15日
【高能所】如何做好⼀份学术报告& 简单介绍LaTeX 的使用
【2020新书】Kafka实战:Kafka in Action,209页pdf
专知会员服务
65+阅读 · 2020年3月9日
周志华教授:如何做研究与写论文?
专知会员服务
148+阅读 · 2019年10月9日
多因素问题分析时,如何确立各因素权重?
人人都是产品经理
74+阅读 · 2020年3月4日
腾讯推荐引擎组员工:谈谈推荐系统架构
腾讯大讲堂
14+阅读 · 2019年10月23日
在K8S上运行Kafka合适吗?会遇到哪些陷阱?
DBAplus社群
9+阅读 · 2019年9月4日
深度 | 推荐系统如何冷启动?
AI100
17+阅读 · 2019年4月7日
Python用于NLP :处理文本和PDF文件
Python程序员
4+阅读 · 2019年3月27日
Flink 靠什么征服饿了么工程师?
阿里技术
6+阅读 · 2018年8月13日
如何完成一篇有效的英文写作
中科院物理所
6+阅读 · 2018年4月13日
深度学习中的「卷积层」如何深入理解?
深度学习世界
6+阅读 · 2017年11月30日
Arxiv
5+阅读 · 2018年5月1日
Arxiv
5+阅读 · 2016年1月15日
Arxiv
3+阅读 · 2012年11月20日
VIP会员
相关资讯
多因素问题分析时,如何确立各因素权重?
人人都是产品经理
74+阅读 · 2020年3月4日
腾讯推荐引擎组员工:谈谈推荐系统架构
腾讯大讲堂
14+阅读 · 2019年10月23日
在K8S上运行Kafka合适吗?会遇到哪些陷阱?
DBAplus社群
9+阅读 · 2019年9月4日
深度 | 推荐系统如何冷启动?
AI100
17+阅读 · 2019年4月7日
Python用于NLP :处理文本和PDF文件
Python程序员
4+阅读 · 2019年3月27日
Flink 靠什么征服饿了么工程师?
阿里技术
6+阅读 · 2018年8月13日
如何完成一篇有效的英文写作
中科院物理所
6+阅读 · 2018年4月13日
深度学习中的「卷积层」如何深入理解?
深度学习世界
6+阅读 · 2017年11月30日
Top
微信扫码咨询专知VIP会员