MySQL 核心模块揭秘 | 43 期 | 锁模块小结

科技   科技   2024-11-27 08:00   上海  

作者:操盛春,爱可生技术专家,公众号『一树一溪』作者,专注于研究 MySQL 和 OceanBase 源码。
爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。




✍ 模块小结

本文我们对锁模块已经发布的 27 篇文章做个简单回顾。

1. 理论篇

16 期InnoDB 表锁
👆介绍了 InnoDB 的几种表锁。

17 期InnoDB 有哪几种行锁?
👆介绍了 InnoDB 的几种行锁(实际上是行锁的锁模式、精确模式)。

18 期锁在内存里长什么样?
👆介绍了 InnoDB 的表锁结构和行锁结构。

19 期锁模块里有什么?长什么样?
👆介绍了锁模块全局对象的各属性及初始化。

20 期怎么加表锁?
👆介绍了 InnoDB 加表锁的主要流程。

21 期行锁 (1) 快速加锁
22 期行锁 (2) 慢速加锁
👆这两篇介绍了 InnoDB 加行锁的主要流程。

23 期锁等待
👆介绍了后台线程处理锁等待的主要流程。

24 期锁等待超时
👆介绍了后台线程处理锁待锁超时的主要流程。

25 期死锁(1)准备工作
26 期死锁(2)发现死锁
27 期死锁(3)解决死锁
👆这三篇介绍了后台线程解决死锁的流程。

28 期什么时候释放锁?
👆介绍了 InnoDB 释放行锁和 AUTO-INC 锁的时机。

29 期授予锁
👆介绍了 InnoDB 获得表锁和行锁的两种场景。

30 期死锁日志详解
👆详细解释了死锁日志的各项输出表示的意思。

31 期隐式锁
👆介绍了什么是隐式锁,怎么判断记录上存在隐式锁,以及隐式锁什么时候转换为显式锁。

2. 实战篇

32 期插入记录,主键索引冲突加什么锁?
33 期RR 隔离级别插入记录,唯一索引冲突加什么锁?
34 期RC 隔离级别插入记录,唯一索引冲突加什么锁?
35 期主键索引等值查询加什么锁?
36 期非唯一索引等值查询加什么锁?
37 期主键索引范围查询加什么锁?
38 期非唯一索引范围查询加什么锁?
39 期死锁案例分析(1)插入意向锁
40 期insert on duplicate 加锁分析(1)
41 期insert on duplicate 加锁分析(2)
42 期insert on duplicate 加锁分析(3)
👆这十二篇分析了各种场景下,InnoDB 会加哪些行锁,以及为什么要加这些行锁。


🎁 互动有礼

聆听读者真实反馈,优化专栏阅读体验,赢取好礼!

活动规则:文末留言并转发本文到朋友圈,留言不少于 30 字(拒绝水文和大段 AI 生成)。

  • 赞数与留言内容选出 5 位【优秀留言奖】获得社区大礼包一份社区图书 + 挂件 + 贴纸 + 帆布袋)

  • 在【优秀留言奖】的获得者中再由作者选出 1 位【最佳留言奖】送出米家胸包一个。

留言话题:

  1. 锁模块读后感
    1. 有什么收获?
    2. 最喜欢那几篇?为什么?
  2. 内容呈现形式上有什么建议?
  3. 未来更期待哪个模块?Undo/Redo/MVCC 等等

话题围绕专栏但不限于以上话题。

活动时间: 2024年11月27日 8:00 ~2024年12月1日 0:00

奖品兑换:活动结束后会在留言区开奖,请中奖同学联系社区小助手微信(ActionOpenSource)验证领取。

最后,我们希望听到社区读者最真实的反馈,这对我们十分重要。

章节预告:Undo 日志模块。

往期回顾

15 期 | 事务模块小结

14 期 | 回滚整个事务

13 期 | 回滚到 savepoint

12 期 | 创建 savepoint

11 期 | InnoDB 提交事务,提交了什么?

10 期 | binlog 怎么写入日志文件?

09 期 | 二阶段提交 (3) flush、sync、commit 子阶段

08 期 | 二阶段提交 (2) commit 阶段

07 期 | 二阶段提交 (1) prepare 阶段

06 期 | 事务提交之前,binlog 写到哪里?

05 期 | 读事务和只读事务的变形记

04 期 | 终于要启动事务了

03 期 | 我是一个事务,请给我一个对象

02 期 | BEGIN 语句会马上启动事务吗?

01 期 | 事务的起源:事务池和管理器的初始化



以下是作者的个人公众号和联系方式,欢迎交流。


公众号一树一溪微信csch52

爱可生开源社区
爱可生开源社区,提供稳定的MySQL企业级开源工具及服务,每年1024开源一款优良组件,并持续运营维护。
 最新文章