B+Tree(理解索引为什么这样做)

news/2025/12/6 14:29:39/文章来源:https://www.cnblogs.com/xfydaydayup/p/19315732

🧱 1. 先一句话:B+Tree 是为磁盘 I/O 优化出来的树

不是为了算法优雅,也不是为了数据结构好看。

数据库最贵的不是算力,是:

磁盘随机 I/O

随机读一个页(16KB)要 0.1~1ms
在 CPU 看来这是地狱般的慢。

所以索引设计目标只有一个:

减少磁盘随机 I/O 次数,让查询尽量少读页。

能做到:

  • 高扇出(每个节点分叉数多)
  • 高度非常低(一般 2~3 层)
  • 每次查找只需要 2–3 次 I/O

这就是 B+Tree。


🧊 2. 为什么不是“二叉树”?

你用一个例子就能秒懂。

假设 1000 万条数据。

用二叉树(例如 AVL、红黑树):

树高度大约:

log2(1000万) ≈ 23 层

一次查询要走 23 层。
每层一个节点。
每个节点都可能不在内存 → 就要读一个页。

所以:
一条查询 = 最多 23 次磁盘随机 I/O

性能直接暴毙。


🌲 3. B+Tree 为什么高度低?(关键:高扇出)

数据库不是一条条数据放在节点,而是“一个节点(一个页)放很多 key”。

一个页 16KB
一个 key(主键 + 指针)几十字节

算一下:

一个页可以放大约 200~1000 个 key

也就是:
一个节点可以有 200~1000 个子节点。

扇出巨大。

因此树高度极低:

数据量 B+Tree 高度
10 万 高度 2
1000 万 高度 3
1 亿 高度 3~4

也就是说,你查任何一条记录:

👉 最多读 3 个磁盘页就搞定
(根节点 + 一层中间节点 + 叶子节点)

现代 InnoDB 根节点几乎总是在 Buffer Pool
所以:

→ 查询通常只做 1 次磁盘 I/O

这就是为什么 B+Tree 强无敌。


🧨 4. 为什么不是 Hash?

Hash 看似 O(1),为什么不用?

因为:

❌ Hash 不支持范围查询

比如:

WHERE age BETWEEN 20 AND 30

Hash 根本不知道 key 的相对大小。

B+Tree 天生支持范围查询,靠页之间的链表就能顺序扫描。

❌ Hash 不能支持排序(ORDER BY)

你要按 name 排序,Hash 没有顺序结构。

❌ Hash 冲突严重,存储更复杂

❌ Hash 不支持前缀匹配(like 'abc%')

所以 Hash 只能用于:

  • 内存 KV 存储
  • Redis
  • 哈希表

数据库存储引擎 100% 不适合。


🧩 5. 为什么 B+Tree 的“每个节点 = 一个磁盘页”很关键?

这是绝妙的设计点。

InnoDB 规定:

每一个节点 = 正好一页(16KB)

因为磁盘读取的最小单位是页,不是字节。

一次磁盘 I/O = 把 16KB 整页搬进来
那干脆把节点设计成大小刚好一页:

✔ 一次 I/O 就能把整个节点的数据读进来
✔ 这个页里有几百个 key(超级省 I/O)
✔ 这就是高扇出
✔ 扇出大 → 树高低 → 访问层数少 → 查询快

这就是数据库工程师的智慧:

“我知道磁盘读写慢,所以我把树节点做成和磁盘页一样大。”

这不是算法,是工程。


🧵 6. 为什么 B+Tree 的叶子节点用链表串起来?

因为数据库大量使用范围扫描(range scan):

WHERE id BETWEEN 10 AND 20000

如果叶子节点是链表:

Page1 → Page2 → Page3 → ...

那么找起点后,就是连续顺着链表走:

  • 连续页 → 顺序 I/O
  • 顺序 I/O 比随机 I/O 快几十倍

所以范围查询飞快。


🥇 7. 为什么是 B+Tree,而不是 B-Tree?

B+Tree 的特点:

✔ 所有数据都在叶子节点(更适合磁盘)

内节点只存 key,不存数据 → 放更多 key → 高扇出 → 树更低

✔ 范围扫描直接从叶子链表扫,非常快

✔ 叶子节点存储结构适配页(16KB),能放更多行

B-Tree 查找过程中就会遇到“数据放在内节点里”
→ 查询变复杂
→ 范围扫描困难

所以 B+Tree 是更适合数据库的版本。


🎯 最终总结:

索引用 B+Tree,是因为:

🥇 1. 读磁盘就是最贵 → 要减少 I/O

🥇 2. 一个节点一页,提高扇出降低高度

🥇 3. 范围查询大量使用 → 链表顺序扫快

🥇 4. 内节点不存数据 → 扇出更大 → 树更矮

🥇 5. 主键自增插入不会导致随机分裂 → 高效稳定

数据库里的 B+Tree
不是数据结构课上的玩具
而是高度适配存储介质的“工程产物”。

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

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

相关文章

2025年12月车间喷淋喷雾,车间喷雾降尘设备,高压喷雾机厂家最新推荐:喷雾精度与品牌筛选

引言在2025年12月,车间喷淋喷雾及喷雾降尘设备在工业生产中的重要性愈发凸显。国内相关行业协会对车间喷雾降尘设备进行了全面且权威的测评。据协会发布的白皮书显示,此次测评覆盖了全国超过500家高压喷雾机厂家及相…

2025年12月降尘喷淋系统,工地喷淋,车间喷淋降温系统厂家最新推荐:降温效果与品质参考

引言在 2025 年 12 月,降尘喷淋系统、工地喷淋以及车间喷淋降温系统在建筑施工、工业生产等领域的重要性愈发凸显。国内相关行业协会为了规范市场,为用户提供更具参考价值的选择,开展了一系列针对此类系统厂家的测评…

內網滲透:Metasploit、Cobalt Strike使用

1、复习msf,使用msfvenom生成木马并反弹meterpreter会话2、参考课件,使用msf完成黑客攻击内网初体验实验3、安装部署Cobalt Strike服务端并使用客户端连接4、使用Cobalt Strike生成木马并成功控制肉鸡执行屏幕截屏操…

2N7002K-ASEMI智能家居控制专用2N7002K

2N7002K-ASEMI智能家居控制专用2N7002K编辑:LL 2N7002K-ASEMI智能家居控制专用2N7002K 型号:2N7002K 品牌:ASEMI 封装:SOT-23 RDS(on):5.0Ω 批号:最新 引脚数量:3 封装尺寸:如图 特性:N沟道MOS管 工作结温:-…

2025年深圳Top5智能营销SaaS公司排行榜:南方网通优

为帮助企业精准筛选适配智能营销需求的SaaS服务商,避免技术选型弯路,本文从技术架构创新性、行业场景适配度、客户响应效率及真实口碑反馈四大维度,对深圳地区头部玩家展开评估,终梳理出2025年的5大智能营销SaaS公…

探秘中臻达:钢结构领域的靠谱之选

在钢结构行业,中臻达逐渐崭露头角,备受关注。很多人都在问中臻达怎么样,中臻达产品又如何,接下来就让我们深入了解一下。 行业优势显著 中臻达的技术创新成果在行业内具有领先地位。在工业建筑钢结构方面,其核心构…

20232411 2025-2026-1 《网络与系统攻防技术》实验八实验报告

1.实验内容Web前端 - HTML基础 Web前端 - JavaScript与DOM Web后端 - MySQL基础 Web后端 - PHP与数据库连接 基本安全攻击实践 综合安全平台实战2.实验过程 1.建立Web前端html。 (1)启动Apache。使用命令systemctl sta…

VC(9.0~14.x)运行库下载链接

VC(9.0~14.x)运行库下载链接Visual Studio VCVS2008 VC9.0VS2010 VC10.0VS2012 VC11.0VS2013 VC12.0VS2015 VC14.0VS2017 VC14.x1VS2019 VC14.x1VS2022 VC14.x1VS2026 VC14.x2Note!!! x1 and x2: x1 was the name us…

Kubernetes集群的搭建与DevOps实践(上)- 架构设计篇

本文将探讨生产级Kubernetes集群的架构设计、技术选型,以及完整的DevOps体系设计 适合读者:架构师、技术负责人、希望深入理解K8s和DevOps设计原理的工程师目录一、为什么需要Kubernetes 二、整体架构设计 三、技术选…

2025年景观护栏设计公司五大推荐,景观护栏设计厂家选哪家合

在城市建设与园林景观升级的浪潮中,优质的景观护栏不仅是安全防护的守护者,更是城市美学与品牌形象的点睛之笔。面对市场上鱼龙混杂的景观护栏供应商,如何找到口碑好、服务靠谱的合作厂家?以下依据产品工艺、服务能…

2025年中国口碑好的包装箱木箱公司推荐:木头包装箱定制厂家

本榜单基于真实客户反馈、行业资质认证与项目交付数据,筛选出口碑与实力兼具的标杆企业,为企业解决包装选品难、成本控制难、合规运输难核心痛点,精准匹配可靠合作伙伴。 TOP1 推荐:郑州森一包装有限公司 推荐指…

2025年电线电缆,国标电线电缆,铜芯电线电缆厂家推荐:行业盘点与品质红榜发布

引言在当今全球化的工业发展浪潮中,电线电缆作为电力传输和信息传递的关键基础设施,其质量和性能直接关系到各个行业的稳定运行。为了给广大用户提供权威、可靠的电线电缆厂家推荐,行业协会联合专业测评机构开展了本…

2025年电线电缆,国标电线电缆,铜芯电线电缆厂家推荐,高稳定,导电强的行业优选

引言在当今的工业与生活领域,电线电缆起着至关重要的作用,其质量和性能直接影响到用电安全和设备的正常运行。为了给广大用户提供专业、客观的电线电缆厂家推荐,我们参考了行业协会的测评数据以及相关白皮书内容。本…

【QT/C++】Qt基础控件详解:输入与显示控件(超详细) - 详解

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

2025年电线电缆,国标电线电缆,铜芯电线电缆厂家推荐,导电工艺与市场口碑深度解析

引言在当今全球化的工业发展进程中,电线电缆作为电力传输和信息传递的关键基础设施,其质量和性能直接影响着各个行业的稳定运行。根据国际权威行业协会的测评数据以及相关白皮书显示,全球电线电缆市场规模正以每年[…

2025年12月YJV电力电缆,YJY电力电缆,橡套电力电缆厂家最新推荐:耐温性能测评与选购建议

引言在 2025 年 12 月的电力电缆市场中,YJV 电力电缆、YJY 电力电缆以及橡套电力电缆的应用愈发广泛,其耐温性能直接影响着电力传输的稳定性与安全性。国内线缆行业协会近期发布的白皮书显示,过去一年因电缆耐温性能…

MySQL 基本原理和架构(通俗易懂)

🚀 一句话先把全貌讲清楚(你一定要先有画面) MySQL 就是一台小型“仓库 + 快递中心”: 里面有货架(表), 有仓库管理员(存储引擎), 有前台接单员(SQL 层), 有账本(redo / undo), 有锁(控制别人别乱动…

完整教程:C语言变量与输入输出详解——从printf到scanf的全掌握

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

智能安全帽哪家好?哪家智能安全帽质量管控严

在工业生产与工程建设领域,智能安全帽作为保障作业人员安全、提升管理效率的核心装备,其质量管控与技术性能直接关系到企业安全生产与运营成本。面对市场上鱼龙混杂的智能安全帽厂家,如何选择质量管控严格、技术可靠…

实测openGauss 6.0 LTS向量版:国产数据库的 RAG 实践之路 - 教程

实测openGauss 6.0 LTS向量版:国产数据库的 RAG 实践之路 - 教程2025-12-06 14:06 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !im…