摘要:
在 InnoDB 存储引擎中,一条记录的完整结构不仅包含用户定义的列,还包含多个 系统隐藏字段。这些隐藏字段是 InnoDB 实现事务(ACID)、多版本并发控制(MVCC)和索引机制的核心。以下是逐条解析: 1. 用户定义的列(User Columns) 即表结构中用户明确定义的字段,例如 CRE 阅读全文
摘要:
在 InnoDB 存储引擎中,插入操作(INSERT)是否一定会加插入意向锁(Insert Intention Lock) 取决于具体的插入场景和事务隔离级别。以下是详细分析: 1.插入意向锁的作用 设计目标: 提高并发插入效率,允许多个事务在 同一间隙(Gap) 插入 不冲突的记录(如不同主键值) 阅读全文
摘要:
插入意向锁(Insert Intention Lock)与间隙锁(Gap Lock)的区别 在 InnoDB 中,插入意向锁和间隙锁都是用于管理索引间隙(Gap)的锁机制,但它们的 设计目的、加锁行为 和 兼容性规则 有显著不同。以下是两者的核心区别: 定义与设计目标 锁类型 定义 设计目标 间隙锁 阅读全文
摘要:
在 InnoDB 中,间隙锁(Gap Lock) 和 Next-Key Lock 的兼容性规则不同,核心原因在于它们的 锁类型(S/X) 和 锁定范围 的差异。以下是详细解释: 间隙锁(Gap Lock)的兼容性 锁定对象:仅锁定索引记录之间的间隙(例如 (10, 20)),不锁定任何实际存在的记录 阅读全文
摘要:
MySQL InnoDB 引擎的默认隔离级别虽然是「可重复读」,但是它很大程度上避免幻读现象(并不是完全解决了,详见这篇),解决的方案有两种: 针对 快照读(普通 select 语句),是通过 MVCC 方式解决了幻读,因为可重复读隔离级别下,事务执行过程中看到的数据,一直跟这个事务启动时看到的数据 阅读全文
摘要:
Next-Key Lock 和间隙锁(Gap Lock)是 InnoDB 中两种不同的锁机制,它们的设计目标和使用场景有所区别,但都与 防止幻读(Phantom Read) 和 保证范围查询的一致性 密切相关。以下是它们的核心区别和具体应用场景: 定义与作用范围 锁类型 定义 锁定范围 示例(索引值 阅读全文