InnoDB 索引 B+Tree 全剖析

news/2025/12/6 13:53:00/文章来源:https://www.cnblogs.com/xfydaydayup/p/19315631

⭐ 第一章:为什么必须是 B+Tree 而不是 B-Tree / Hash?

1. Hash(均匀分布)

  • 优点:O(1) 查找
  • 缺点致命:不支持范围查询、排序、前缀匹配

WHERE age BETWEEN 10 AND 18 → 完全废掉

2. B-Tree(每个节点都保存数据)

  • 层级深
  • 每次查找会把节点全部读入内存
  • 叶子节点不联结 → 顺序扫描慢

3. B+Tree(InnoDB 采用)

✔ 所有数据都在叶子节点(固定大小页)
✔ 非叶节点只保存索引 key,让树更矮
✔ 叶子节点通过双向链表相连 → 范围查找超级高效
✔ 批量 IO、预读能力更强

一句话:B+Tree 更“磁盘友好”,这是数据库选它的根本理由。


⭐ 第二章:InnoDB 索引底层存储单位 —— Page(页)

理解任何索引问题,都必须从 Page 开始。
InnoDB 一页固定 16KB

一个节点 = 一个页
!(示意图)无法画图,用文字结构表达如下:

┌──────────────────────────┐
│ Page Header(记录数量等) │
├──────────────────────────┤
│ Directory Slots(记录目录)│
├──────────────────────────┤
│ 行记录1                   │
│ 行记录2                   │
│ ...                      │
└──────────────────────────┘

一个 B+Tree 节点就是一个 Page。
所以:

  • Page 越大 → 每个节点能容纳更多 key → 树越矮
  • 树越矮 → 查找越快(通常高度 2~4)

⭐ 第三章:聚簇索引(主键索引)结构

InnoDB 规定:

表数据本身就是一棵按主键排序的 B+Tree(聚簇索引)。

也就是:

主键索引的叶子节点上存放“整行记录”。

结构图:

                      [Root]/      \[Node]     [Node]/   \        /   \[Leaf: PK, row] [Leaf: PK, row] ...

叶子节点结构:

+-----------------------------+
| PK: 1 | name: Tom | age 20 |
+-----------------------------+
| PK: 2 | name: Bob | age 30 |
+-----------------------------+
...

数据按 PK 顺序紧密存放。


⭐ 第四章:二级索引(普通索引)结构

二级索引的叶子节点不存整行,而是:

叶子节点存储:索引列 + 主键值

结构如下:

Leaf page:
+------------------------+
| age: 20 | PK: 1        |
+------------------------+
| age: 20 | PK: 9        |
+------------------------+
| age: 30 | PK: 2        |
+------------------------+

想要获取整行怎么办?

必须“回表”:

  1. 在二级索引树找到 PK
  2. 到主键聚簇索引树里再查一遍

这就是回表的本质。


⭐ 第五章:一条查询在 B+Tree 中的真实路径

例如:

SELECT * FROM user WHERE age = 30;

步骤:

  1. 根据 age 进入二级索引 B+Tree
  2. 找到所有符合 age=30 的记录(叶子节点)
  3. 每条记录拿到主键值,例如 PK=2
  4. 回到聚簇索引 B+Tree
  5. 按 PK 找整行记录

流程图(文字版):

二级索引(B+Tree) ——找到PK→ 聚簇索引(B+Tree)

⭐ 第六章:为什么“回表”贵?

因为:

  • 二级索引查一次 = 若干次磁盘页 IO
  • 回表再查一次主键 = 再来若干次 IO

假设二级索引页高 = 3
主键页高 = 3

一次语句需要:
3+3 = 6次 page 访问(注意是最小情况)

如果 age=30 有 1000 行?
→ 就得回表 1000 次(糟糕)

所以覆盖索引非常重要。


⭐ 第七章:覆盖索引的威力

例如:

SELECT age FROM user WHERE age = 30;

如果只查二级索引里的字段(age 已经在二级索引里),不用回表。

称为 覆盖索引

效果:

  • 不回表 → 大幅减少 IO → 查询速度翻倍甚至几十倍
  • 执行计划显示:Using index

实际企业中会专门设计复合索引用来“覆盖重要查询”。


⭐ 第八章:复合索引是怎么存的?

例如:

CREATE INDEX idx_name_age ON user(name, age);

二级索引的 key 顺序是:

name → age → 主键

所以它的排序实际是:

(name1, age1, PK1)
(name1, age2, PK9)
(name2, age3, PK5)
...

这直接解释了:

  • 最左前缀原则
  • 为什么 name = ? AND age = ? 能走索引
  • 为什么 age = ? 不行

这是 B+Tree 排序规则决定的。


⭐ 第九章:页分裂与页合并

当你插入数据时:

  • 如果 16KB 页满了 → 分裂为两个页
  • 分裂后 B+Tree 层级可能会上升(树变高)

分裂代价:

  • IO 变多
  • 页不连续 → 碎片化 → 查询变慢
  • CPU 内存消耗增加

所以:

👉 使用自增主键顺序插入可以最大化避免页分裂
👉 UUID 主键特别容易造成页分裂,性能差

这就是为什么阿里规范极度推荐:

强制使用递增主键(bigint 自增)。


⭐ 第十章:为什么不要用 UUID 做主键?

简单一句:

UUID 是随机写,会疯狂触发页分裂。

效果:

  • Page 几乎每次都被打断成碎片
  • B+Tree 越长 → IO 越多
  • 写入性能降几十倍

真实场景你如果用了 UUID 当主键,一定会踩到“插入性能极差”。


⭐ 第十一章:一张图总结全部核心逻辑

(文字图示)

                二级索引树 (索引列 + PK)|| 回表v聚簇索引树 (整行记录)^|Page16KB

⭐ 最后:你现在掌握了哪些?

✔ 为什么是 B+Tree
✔ 聚簇索引 vs 二级索引
✔ 回表本质
✔ 覆盖索引
✔ 最左前缀原则
✔ Page 分裂
✔ 为什么自增主键最佳
✔ 为什么 UUID 糟糕
✔ 执行计划 cost 如何计算(基于 B+Tree 层级 + 回表 IO)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/990190.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Keyviz 屏幕按键程序 下载

Keyviz是一个免费的开源软件,打开后可以实时在屏幕上展示按下的按键,更方便操作演示类的视频,下面介绍软件的使用方法,非常简单 网站 www.artcg.design 下载与安装 地址:https://github.com/mulaRahul/keyviz/rel…

2025 年 12 月电线厂家权威推荐榜:铜芯/无氧铜/BVR/光伏/工业/家装/消防电线全品类深度解析与选购指南

2025 年 12 月电线厂家权威推荐榜:铜芯/无氧铜/BVR/光伏/工业/家装/消防电线全品类深度解析与选购指南 在现代社会的基础设施建设与能源传输体系中,电线电缆作为“血管”与“神经”,其性能与可靠性直接关系到电力系…

COCO数据集 评估标准中计算 mAP(mean Average Precision) 的核心方法:

在 IoU阈值从0.5到0.95 的范围内,每隔 0.05 计算一个AP,然后取平均值。 mAP@[.5:.95]=101​IoU=0.5∑0.95​APIoU​ 具体IoU阈值序列: [0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95] 共 10个 阈值点,计算 10个A…

2025年中国干式快速接头制造商推荐:航空专用干式快速接头哪

TOP1 推荐:曼太柯(杭州)流体技术有限公司 推荐指数:★★★★★ 口碑评分:全球流体输送安全领域供应商 专业能力:曼太柯(杭州)流体技术有限公司是Elaflex集团-Mann Teknik AB在中国设立的外商独资企业,旗下MannTek…

2025上海外资注册公司五大靠谱机构年度排名,看看哪家收费便

本榜单依托上海本地政策适配性、服务透明化、客户口碑三大核心维度,深度筛选5家专业机构,为企业精准匹配合规高效的注册服务伙伴,规避低价陷阱与政策风险。 TOP1 推荐:上海广域 推荐指数:★★★★★ 口碑评分:上…

2025年单片机开发权威推荐榜:单片机程序/设计/定制/外包,技术精湛与高效交付的嵌入式解决方案专家

2025年单片机开发权威推荐榜:单片机程序/设计/定制/外包,技术精湛与高效交付的嵌入式解决方案专家 在当今智能化浪潮席卷全球的背景下,单片机作为嵌入式系统的核心,其开发与应用已深度渗透至工业控制、消费电子、汽…

深入理解MySQL基本原理和架构

🚀 一、MySQL 整体架构(从宏观到微观) MySQL 主要由 Server 层 与 存储引擎层(InnoDB) 组成。 ┌──────────────────────────────┐ │ Server 层 │ │ SQ…

深入浅出Mybatis - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025 年 12 月折弯机折边机厂家权威推荐榜:自动/数控/大型/全自动/铜排/异形折边机,实力工厂精准选型与高效加工解决方案

2025 年 12 月折弯机折边机厂家权威推荐榜:自动/数控/大型/全自动/铜排/异形折边机,实力工厂精准选型与高效加工解决方案 随着制造业向高端化、智能化、绿色化方向深度转型,金属板材加工领域正经历一场深刻的技术革…

2025年装配式建筑房屋材料制造/安装公司排行榜,精选技术强

为帮助企业精准锁定适配需求的装配式建筑合作伙伴,避免选型走弯路,我们从技术落地能力(如构件精度控制、安装工艺成熟度)、产品质量稳定性(含材料性能、抗震防水指标)、全周期服务质量(覆盖设计到售后维护)及真…

RustDesk安装部署

参考文档: 安装部署:https://blog.csdn.net/2509_94082995/article/details/155366183 开放的端口:https://zhuanlan.zhihu.com/p/1912799322636030027 官网:https://github.com/rustdesk/rustdesk/blob/master/do…

2025 年 12 月电动隔断厂家权威推荐榜:智能活动隔断/高端玻璃隔断/移动隔音隔板,创新设计与场景适配深度解析

2025 年 12 月电动隔断厂家权威推荐榜:智能活动隔断/高端玻璃隔断/移动隔音隔板,创新设计与场景适配深度解析 随着现代建筑空间对灵活性、功能性与美学要求的不断提升,电动隔断系统已从传统的空间分隔工具,演变为集…

2025 年 12 月油漆品牌权威推荐榜:环保漆、工业漆、木器漆、墙面漆,源头厂家精选与性能深度解析

2025 年 12 月油漆品牌权威推荐榜:环保漆、工业漆、木器漆、墙面漆,源头厂家精选与性能深度解析 在当今的工业制造与建筑装饰领域,涂料作为不可或缺的表面处理与防护材料,其性能、环保性及可靠性直接关系到最终产品…

2025年液化气专用干式快速接头厂商推荐:干式快速接头供应企

TOP1 推荐:曼太柯(杭州)流体技术有限公司 推荐指数:★★★★★ 口碑评分:全球流体安全输送领域厂商 专业能力:曼太柯是Elaflex集团旗下专注干式接头与拉断阀的核心品牌,作为液化气专用干式快速接头国际品牌的代表…

2025年五大靠谱本国端口锁企业推荐,专业的usb端口锁与信

在数字化办公与设备管理需求激增的当下,端口锁作为保障设备安全、防止数据泄露的关键工具,已成为企业IT运维的隐形防线。面对市场上参差不齐的产品,如何挑选专业的usb端口锁与信誉好的端口锁品牌?以下从技术实力、…

轻松上手:使用 Vercel 部署 HTML 页面教程 - 实践

轻松上手:使用 Vercel 部署 HTML 页面教程 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas"…

redis集群下如何启用lua脚本

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025 年 12 月桥架型材厂家权威推荐榜:铝合金/不锈钢/热镀锌桥架,大跨距线槽与专用型材实力品牌深度解析

2025 年 12 月桥架型材厂家权威推荐榜:铝合金/不锈钢/热镀锌桥架,大跨距线槽与专用型材实力品牌深度解析 在现代工业与民用建筑、电力、通信、轨道交通等基础设施建设中,桥架作为承载和保护线缆的关键构件,其性能与…

2025年中国优质滑板公园设计工作室推荐:靠谱的滑板公园设计

TOP1 推荐:盐城天人极限运动场地建设有限公司 推荐指数:★★★★★ 口碑评分:国内首推滑板公园设计定制机构 专业能力:盐城天人极限运动场地建设有限公司是国内专注极限运动场地领域的实力厂家,拥有多年行业经验与…

2025年五大GEO源头厂家推荐排行榜,创新能力强+性价比高

为帮企业在AI搜索营销新赛道精准锁定适配的GEO合作伙伴,避免陷入技术不达标、服务不稳定、成本虚高的选型误区,我们从技术原创性(是否为GEO源头研发、著作权数量)、服务覆盖力(网点布局、本地化支持)、客户口碑(…