目录

MySQL IS NULL 会索引失效?深度解析 InnoDB 索引结构与优化器决策

许多开发者误以为 MySQL 中 WHERE name IS NULL 会导致索引失效,实则不然。本文通过 innodb_ruby 工具与二进制文件分析,揭示 NULL 值在 B+ 树中的存储位置;并通过案例复现证明,所谓“索引失效”通常是由于条件匹配行数过多(如 >20%)导致回表成本高于全表扫描,由 Optimizer 主动放弃索引所致。

MySQL IS NULL 会索引失效?深度解析 InnoDB 索引结构与优化器决策

MySQL自增主键不连续的原因解析

MySQL 自增主键出现断号是常见现象,主要由唯一键冲突、事务回滚及批量插入策略导致。InnoDB 引擎将自增值保留在内存中,插入失败或事务回滚时已分配的 ID 不会复用;批量写入时更会成倍预分配 ID。理解这一机制有助于合理设计数据库结构。

MySQL自增主键不连续的原因解析

MySQL外键约束设置指南:ON DELETE与ON UPDATE选项详解

本文详细讲解MySQL外键(Foreign Key)的作用及创建方法。重点解析ON DELETE和ON UPDATE的四种策略:RESTRICT、CASCADE、SET NULL及SET DEFAULT,并结合InnoDB引擎特性说明注意事项。通过父子表关联示例,演示如何保持数据完整性并防止误删,帮助开发者正确配置数据库关系。

MySQL外键约束设置指南:ON DELETE与ON UPDATE选项详解

MySQL重做日志(Redo Log)机制详解:持久性与崩溃恢复原理

本文解析MySQL InnoDB引擎中redo log的核心作用。作为物理日志,redo log记录数据页的最终修改状态,确保事务的持久性(D)。通过先写日志(WAL)机制,事务提交时先将redo log刷盘,即使发生断电等异常,MySQL重启后也能利用redo log恢复数据,而无需等待脏页写入磁盘。

MySQL重做日志(Redo Log)机制详解:持久性与崩溃恢复原理

MySQL8 自增主键持久化机制详解与升级验证

本文深入解析 MySQL 8.0 引入的自增主键(AUTO_INCREMENT)持久化特性。通过对比 MySQL 5.7,详细说明该机制如何利用 redo log 防止数据库重启后的 ID 重复与业务冲突。包含完整的建表、插入、删除及重启测试步骤,帮助开发者理解版本差异并安全平滑升级。

MySQL8 自增主键持久化机制详解与升级验证

MySQL InnoDB MVCC多版本并发控制原理详解

本文深入解析MySQL InnoDB存储引擎的多版本并发控制(MVCC)机制。通过区分当前读与快照读,结合DB_TRX_ID、回滚指针及Read View等核心组件,阐述如何在非阻塞状态下实现高并发读写。了解MVCC如何通过维护数据多个历史版本,确保事务在特定隔离级别下读取数据的一致性与可见性规则。

MySQL InnoDB MVCC多版本并发控制原理详解

InnoDB如何解决幻读:间隙锁与Next-Key Lock机制解析

本文详细解析MySQL InnoDB存储引擎如何通过在可重复读(Repeatable Read)隔离级别下引入间隙锁(Gap Lock)和Next-Key Lock机制来解决幻读问题。文章解释了幻读的定义、四种隔离级别的差异,并通过B+树索引结构说明了行锁、间隙锁及临键锁的锁定范围与冲突判定规则。

InnoDB如何解决幻读:间隙锁与Next-Key Lock机制解析

MySQL InnoDB Buffer Pool 运行机制与调优详解

本文解析 MySQL InnoDB 存储引擎的缓冲池(Buffer Pool)机制。内容涵盖内存初始化、LRU链表结构及Young/Old分区算法,以及Flush和Free链表的工作原理。同时提供多实例配置与动态扩容参数设置,帮助理解减少磁盘IO并提升查询命中率的核心方法。

MySQL InnoDB Buffer Pool 运行机制与调优详解

MySQL事务并发问题与隔离级别详解:MVCC和行锁算法原理

深入解析MySQL InnoDB引擎如何处理事务并发产生的脏读、不可重复读和幻读问题。文章详细阐述了SQL标准的四种事务隔离级别,重点剖析了MVCC(多版本并发控制)如何通过undo log版本链和read view快照在RC与RR级别下协同工作,同时讲解了基于索引的行锁机制及Record、Gap、Next-Key三种锁算法如何解决幻读及死锁问题。

MySQL事务并发问题与隔离级别详解:MVCC和行锁算法原理

MySQL实现分布式锁:原理、步骤与代码示例

本文详细解析了基于MySQL InnoDB引擎实现分布式锁的原理。重点讲解了行锁(共享锁与排他锁)的特性及索引对锁粒度的影响,并通过Java代码演示如何利用`SELECT ... FOR UPDATE`配合唯一索引实现高并发环境下的资源互斥访问。同时对比了MyISAM的表级锁差异,为开发者提供清晰的操作参考。

MySQL实现分布式锁:原理、步骤与代码示例
更多信息

专题列表