23 期 | 锁等待 本文基于 MySQL 8.0.32 源码,存储引擎为 InnoDB。 1. 先排队 不管是加表锁,还是加行锁,如果不能立即获得锁,加锁事务都需要进入锁等待状态。 事务进入锁等待状态,需要用锁结构来排队。和立即获得锁时的锁结构一样,这个锁结构的各属性都已经初始化完成。不同之处在于,它被设置为等待状态。 表锁、行锁处于等待状态时,都不能共用锁结构,而是需要申请一个新的锁结构。 每个事务对象初始化时,会 数据运维 2024-07-03 大树
MySQL 核心模块揭秘 | 22 期 | 行锁 (2) 慢速加锁 目录 1. 加过锁了吗? 2. 需要等待吗? 3. 先找个复用的行锁结构 4. 没找到就申请一个新的 5. 总结 正文 1. 加过锁了吗? 快速加锁逻辑主打简单、快速,它只能处理简单的情况,即通过简单的判断就能确定本次加锁操作不会被阻塞。 对于复杂一点的情况,就需要慢速加锁逻辑来处理了。 关于什么是复杂的情况,可以看前面介绍的慢速加锁条件,命中任何一个慢速加锁条件的,就是复杂的情况。 为了方便介绍 数据运维 2024-06-26 醒在深海的猫
MySQL锁、加锁机制(超详细)—— 锁分类、全局锁、共享锁、排他锁;表锁、元数据锁、意向锁;行锁、间隙锁、临键锁;乐观锁、悲观锁 文章目录 一、概述 1.1 MySQL锁的由来 1.2 锁定义 1.3 锁分类 二、共享锁与排他锁 2.1 共享锁(S锁) 2.2 排他锁(X锁) 2.3 MySQL锁的释放 三、全局锁 3.1 介绍 3.2 语法 3.3 特点 四、表级锁 4.1 介绍 4.2 表锁 4.3 元数据锁(Meta Data Lock) 4.4 意向锁(Intention Lock) 五、行级锁 5.1 介绍 5.2 数据运维 2024-06-24 大猫
21 期 | 行锁 (1) 快速加锁 行锁有两种加锁逻辑,这一期我们聊聊其中之一的快速加锁。 作者:操盛春,爱可生技术专家,公众号『一树一溪』作者,专注于研究 MySQL 和 OceanBase 源码。 爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 行锁有两种加锁逻辑,这一期我们聊聊其中之一的快速加锁。 本文基于 MySQL 8.0.32 源码,存储引擎为 InnoDB。 1. 两种加锁逻辑 更新、删除 数据运维 2024-06-24 爱可生开源社区
MySQL 核心模块揭秘 | 21 期 | 行锁 (1) 快速加锁 目录 1. 两种加锁逻辑 2. 先拿个令牌 3. 再获取行锁结构 4. 快速加锁之一 5. 快速加锁之二 6. 慢速加锁条件有哪些? 7. 总结 正文 1. 两种加锁逻辑 更新、删除记录都需要加行锁,读取、插入记录有时候也需要加行锁,这意味着加行锁是个比较频繁的操作。 对于频繁的操作,为了性能着想,优化是件必须要做的事。 为此,InnoDB 把加行锁操作分为两种逻辑:快速加锁、慢速加锁。 每次加行 数据运维 2024-06-19 醒在深海的猫
MySQL 核心模块揭秘 | 19 期 | 锁模块里有什么?什么样? 作者:操盛春,爱可生技术专家,公众号『一树一溪』作者,专注于研究 MySQL 和 OceanBase 源码。爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 本文基于 MySQL 8.0.32 源码,存储引擎为 InnoDB。 目录 1. 引言 2. 锁模块结构 2.1 谁来管理行锁结构? 2.2 谁来保护表锁和行锁结构? 2.3 锁等待了怎么办? 2.4 那就发个锁等 数据运维 2024-06-05 大白菜程序猿
18 期 | 锁在内存里长什么样? 表锁和行锁都由锁结构承载,这些锁结构在内存里是个什么样的存在? 作者:操盛春,爱可生技术专家,公众号『一树一溪』作者,专注于研究 MySQL 和 OceanBase 源码。 爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 本文基于 MySQL 8.0.32 源码,存储引擎为 InnoDB。 1. 共用的结构 InnoDB 的表锁结构和行锁结构,有一些共同属性,也有一些 数据运维 2024-05-31 共饮一杯
MySQL 核心模块揭秘 | 18 期 | 锁在内存里长什么样? 本文基于 MySQL 8.0.32 源码,存储引擎为 InnoDB。 目录 1. 共用的结构 2. type_mode 3. 表锁结构 4. 行锁结构 4.1 有名有姓的那些属性 4.2 隐姓埋名的内存区域 4.3 共用行锁结构的两个问题 5. 总结 正文 1. 共用的结构 InnoDB 的表锁结构和行锁结构,有一些共同属性,也有一些不同属性。 因为有共同属性,表锁结构和行锁结构都使用结构体 lo 数据运维 2024-05-29 竹子爱熊猫
OceanBase诊断调优 (八) —— 一文教会你排查锁冲突问题 最近总结一些诊断OCeanBase的一些经验,出一个【OceanBase诊断调优】专题,也欢迎大家贡献自己的诊断OceanBase的方法。 1. 前言 OB采用了两阶段封锁机制来保证读写事务并发控制的正确性。因此,在高冲突场景下,行锁冲突是事务经常遇到的问题。但是对于很多OceanBase用户来说,并不清楚什么时候发生了锁冲突,锁冲突的表现又是什么?更别说去排查锁冲突的原因,定位锁冲突的行以及锁冲 数据运维 2024-05-07 Escape