MySQL与关系型数据库

InnoDB 存储结构、B+Tree 索引原理、聚簇索引与二级索引

20 篇文档MODULE 08
DOC

InnoDB 存储结构:表空间、页、区、段、行格式与溢出页(111)

阅读时间:约 45 分钟 难度:中高级 编号:111 一、引言:为什么需要理解 InnoDB 的存储结构? 很多开发者对 MySQL 的认知停留在"建表、写 SQL、加索引"的层面。但当遇到以下问题时,对 In…

DOC

B+Tree 索引原理:层高、页分裂、范围查询与磁盘 I/O(112)

阅读时间:约 45 分钟 难度:中高级 编号:112 一、引言:为什么 B +Tree 是数据库索引的事实标准? 在计算机科学中,可用于索引的数据结构有很多:哈希表、二叉搜索树、AVL 树、红黑树、B 树、跳表…

DOC

聚簇索引与二级索引:主键组织、回表与主键选择(113)

阅读时间:约 45 分钟 难度:中高级 编号:113 一、引言:InnoDB 中两张最重要的"索引面孔" 在 MySQL InnoDB 中,索引只有两种:聚簇索引(Clustered Index)和二级索引(S…

DOC

联合索引:最左前缀、索引下推、覆盖索引与排序利用(114)

阅读时间:约 45 分钟 难度:中高级 编号:114 一、引言:为什么单列索引不够用? 在真实业务中,很少有查询只涉及一个条件。更常见的是: 如果只在 user id 上建索引, status 的过滤需要在回表…

DOC

索引失效场景:函数、隐式转换、范围条件、LIKE与优化器选择(115)

阅读时间:约 45 分钟 难度:中高级 编号:115 一、引言:索引加了,为什么查询还是慢? "我明明加了索引,EXPLAIN 却显示全表扫描。" 这是开发者最常遇到的困惑。索引失效的原因多种多样,但背后都有规…

DOC

Explain 执行计划:type、key、rows、filtered与Extra的诊断方法(116)

阅读时间:约 45 分钟 难度:中高级 编号:116 一、引言:EXPLAIN 是 DBA 的"听诊器" EXPLAIN 是 MySQL 中最强大的诊断工具,没有之一。它不执行 SQL,而是展示 MySQL 优…

DOC

MySQL 优化器:成本模型、统计信息、索引选择与优化器误判(117)

阅读时间:约 45 分钟 难度:中高级 编号:117 一、引言:优化器为什么有时"聪明反被聪明误"? MySQL 优化器(Optimizer)是 SQL 执行的"大脑"。它负责决定使用哪个索引、以什么顺序 JO…

DOC

SQL 优化方法论:慢 SQL 发现、执行计划、改写、索引和效果验证(118)

阅读时间:约 45 分钟 难度:中高级 编号:118 一、引言:SQL 优化不是"加个索引"这么简单 大多数开发者面对慢 SQL 的第一反应是"加索引"。但很多时候,加了索引查询仍然慢,或者索引加了反而影响写入…

DOC

事务 ACID 实现:redo log、undo log、锁和刷盘策略(119)

阅读时间:约 45 分钟 难度:中高级 编号:119 一、引言:数据库最核心的承诺 事务是关系型数据库区别于 NoSQL 的最核心特性。ACID 四个字母代表了数据库对数据一致性的四条承诺: A(Atomici…

DOC

事务隔离级别:脏读、不可重复读、幻读与隔离强度(120)

阅读时间:约 45 分钟 难度:中高级 编号:120 一、引言:隔离级别是"性能"与"一致性"的权衡 并发事务同时读写同一数据时,会产生三类经典问题:脏读、不可重复读、幻读。隔离级别定义了事务之间相互隔离的程度…

DOC

MVCC 原理:Read View、隐藏字段、undo 版本链与快照读(121)

阅读时间:约 45 分钟 难度:中高级 编号:121 一、引言:MVCC 是 InnoDB 并发性能的基石 MVCC(Multi Version Concurrency Control,多版本并发控制)是 In…

DOC

当前读与锁机制:记录锁、间隙锁、临键锁与意向锁(122)

阅读时间:约 45 分钟 难度:中高级 编号:122 一、引言:锁是并发控制的最后一道防线 MVCC 让读操作不加锁,但写操作(以及带锁的读)必须通过锁机制来保证数据一致性。理解 InnoDB 的锁机制,是排查…

DOC

MySQL 死锁:形成原因、检测、日志分析、重试和规避(123)

阅读时间:约 45 分钟 难度:中高级 编号:123 一、引言:死锁是并发编程的经典问题 死锁不是 MySQL 的 bug,而是并发系统中锁互斥的必然结果。InnoDB 会自动检测死锁并回滚其中一个事务,但理解…

DOC

redo、undo、binlog 区别:职责、生命周期及两阶段提交(124)

阅读时间:约 45 分钟 难度:中高级 编号:124 一、引言:MySQL 的三种日志,各司其职 MySQL InnoDB 有三种核心日志:redo log、undo log 和 binlog。它们职责不同、生…

DOC

MySQL 主从复制:binlog、relay log、复制线程与并行复制(125)

阅读时间:约 45 分钟 难度:中高级 编号:125 一、引言:主从复制是高可用的基石 MySQL 主从复制是最基础也是最重要的高可用方案。几乎所有的高可用架构——读写分离、数据备份、故障切换——都建立在主从复…

DOC

复制延迟与数据一致性:原因、监控、治理和读写路由策略(126)

阅读时间:约 45 分钟 难度:中高级 编号:126 一、引言:读写分离的"阿克琉斯之踵" 读写分离是 MySQL 最常见的扩展方案——主库写入,从库读取。但主从之间的复制延迟,意味着从库读取的数据可能不是最新…

DOC

分库分表:拆分维度、路由、扩容、跨库查询和全局 ID(127)

阅读时间:约 45 分钟 难度:中高级 编号:127 一、引言:单表瓶颈的终极解决方案 当单表数据量达到千万级、QPS 达到万级时,索引优化、SQL 改写、缓存等手段已经无法解决根本问题。分库分表是解决海量数据…

DOC

数据库高可用:主从切换、MGR、故障检测、脑裂与数据恢复(128)

阅读时间:约 45 分钟 难度:中高级 编号:128 一、引言:数据库宕机的代价 数据库是业务系统的核心,宕机意味着服务不可用。高可用(HA)的目标是: 当主库故障时,自动切换到备库,最小化服务中断时间。 但高…

DOC

数据库容量规划:QPS/TPS、数据增长、索引容量、连接数和归档(129)

阅读时间:约 45 分钟 难度:中高级 编号:129 一、引言:容量规划是"防患于未然" 数据库容量规划不是"出了问题再扩容",而是在系统设计阶段就预估增长趋势,提前规划资源。好的容量规划可以避免 80% 的线…

DOC

关系型与 NoSQL 选型:一致性、查询能力、扩展性和运维成本(130)

阅读时间:约 45 分钟 难度:中高级 编号:130 一、引言:不是"谁更好",而是"谁更适合" 关系型数据库(MySQL/PostgreSQL)和 NoSQL(Redis/MongoDB/ES/HBase)不…