news 2026/5/6 1:19:57

MySQL的每个B+ 树叶子节点是一行数据?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MySQL的每个B+ 树叶子节点是一行数据?

“MySQL 的每个 B+ 树叶子节点是一行数据?”—— 这个说法不完全准确
InnoDB 存储引擎中,B+ 树的叶子节点存储的是完整的行数据(聚簇索引)或主键值(二级索引),但一个叶子节点通常包含多行数据,而非“一行一节点”。


一、B+ 树节点结构:页(Page)是基本单位

▶ 1.InnoDB 页(Page)
  • 大小:默认16KB(可配置)
  • 类型
    • 数据页(Leaf Page):存储实际数据
    • 索引页(Non-Leaf Page):存储指针
▶ 2.叶子节点内容
索引类型叶子节点存储内容
聚簇索引(主键索引)完整行数据(包括所有列)
二级索引(辅助索引)索引列 + 主键值

💡核心认知
一个叶子节点 = 一个 16KB 页 ≈ 多行数据(非单行)


二、聚簇索引 vs 二级索引

▶ 1.聚簇索引(Clustered Index)
  • 结构
    [页1: 行1, 行2, ..., 行N] ↔ [页2: 行N+1, ..., 行M] ↔ ...
  • 特点
    • 数据即索引:行数据按主键顺序存储在叶子节点
    • 无需回表:直接返回完整数据
▶ 2.二级索引(Secondary Index)
  • 结构
    [页1: (name='Alice', id=100), (name='Bob', id=200), ...]
  • 特点
    • 索引列 + 主键:叶子节点不存完整数据
    • 需要回表:通过主键到聚簇索引查完整行

📌关键点
二级索引的叶子节点 ≠ 完整行数据


三、行数据如何填充分页?

▶ 1.行格式(Row Format)
  • Compact(默认):
    • 每行包含变长字段长度列表 + NULL 标记 + 数据
  • Dynamic(推荐):
    • 大字段(如 TEXT/BLOB)仅存指针,数据存溢出页
▶ 2.单页容纳行数
  • 计算公式
    每页行数 ≈ 16KB / 单行平均大小
  • 示例
    • 行大小 1KB → 每页 ≈ 15 行
    • 行大小 100B → 每页 ≈ 150 行
▶ 3.分裂与合并
  • 插入新行
    • 若页满 →分裂为两个页(5:5 或 9:1)
  • 删除行
    • 若页利用率 < 50% →尝试合并相邻页

四、查询如何利用 B+ 树?

▶ 1.等值查询(主键)
SELECT*FROMusersWHEREid=100;
  • 路径
    • 根节点 → 非叶子节点 →定位到包含 id=100 的页
    • 在页内二分查找具体行
▶ 2.范围查询(主键)
SELECT*FROMusersWHEREidBETWEEN100AND200;
  • 路径
    • 定位起始页 →顺序遍历双向链表直到结束
▶ 3.二级索引查询
SELECT*FROMusersWHEREname='Alice';
  • 路径
    1. name 索引找到(name='Alice', id=100)
    2. id=100回表到聚簇索引查完整行

五、避坑指南

陷阱破局方案
认为“一行一节点”理解页是存储单位,单页含多行
忽略回表成本高频查询用覆盖索引(避免回表)
盲目增大页大小16KB 是平衡 I/O 与内存的最优值

六、终极心法

**“B+ 树不是链条,
而是分块的仓库——

  • 当你理解页结构
    你在校准存储;
  • 当你区分索引类型
    你在优化查询;
  • 当你计算行密度
    你在铸造性能。

真正的数据库能力,
始于对页的敬畏,
成于对细节的精控。”


结语

从今天起:

  1. SHOW TABLE STATUS查看行平均大小
  2. 高频查询设计覆盖索引(避免回表)
  3. 理解页分裂对写性能的影响

因为最好的索引设计,
不是盲目建索引,
而是精准控制每一比特的存储。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/4 17:28:05

人工智能应用-机器听觉:14. 声纹识别的应用

声纹很早便被用于刑侦手段和司法证据。 美国 1994 年电影《燃眉追击》中就描述了这样一个桥段&#xff1a;情报专家仅凭一小段录音&#xff0c;判断说话人可能是“古巴人&#xff0c;35-45 岁之间&#xff0c;在美国东部受教育”等&#xff0c;然后用计算机进行比对&#xff0c…

作者头像 李华
网站建设 2026/5/1 11:45:31

销售老鸟最怕:一身武艺,在机器人报表前无处施展。

一、冲突现场&#xff1a;销冠的“江湖经验”输给了机器人的“打卡指标” 老张是快消行业摸爬12年的销售总监&#xff0c;以前靠“蹲经销商仓库看库存周转”“陪老板喝三杯看诚意”拿了8年集团销冠。可自从公司上线了某传统CRM的智能报表系统&#xff0c;他的日子彻底拧巴了&a…

作者头像 李华
网站建设 2026/5/1 7:14:43

Anthropic最新思考,什么时候才真的需要构建多智能体?

在 AI Agent 开发领域&#xff0c;有一个普遍存在的误区&#xff1a;开发者往往过早地引入多智能体架构&#xff0c;而实际上单一 Agent 就能更好地完成任务。Anthropic 近日发布了一篇技术博客&#xff0c;深入探讨了多智能体系统的适用场景与设计原则&#xff0c;为开发者提供…

作者头像 李华
网站建设 2026/4/24 8:01:27

救命神器9个AI论文工具,专科生毕业论文救星!

救命神器9个AI论文工具&#xff0c;专科生毕业论文救星&#xff01; AI 工具&#xff0c;让论文写作不再难 对于许多专科生来说&#xff0c;毕业论文仿佛是一道难以逾越的门槛。从选题到撰写&#xff0c;再到反复修改和降重&#xff0c;每一步都充满了挑战。而如今&#xff0c;…

作者头像 李华
网站建设 2026/5/5 20:26:23

百考通AI:每日200篇免费AI检测,你的论文合规“预审官”

“你的论文是不是用了AI&#xff1f;” 这句来自导师的简单提问&#xff0c;正成为越来越多留学生的噩梦。在追求学术表达流畅性的同时&#xff0c;如何避免被系统误判为AI生成内容&#xff0c;已成为国际学术圈的新课题。 今天&#xff0c;我们将聚焦一个面向中国学子的学术辅…

作者头像 李华
网站建设 2026/5/3 5:04:22

AI写论文新选择!4款AI论文生成工具,助力轻松完成学术论文!

在2025年&#xff0c;随着学术写作智能化的潮流愈演愈烈&#xff0c;越来越多的人开始尝试使用AI写论文工具。尽管这些工具在某些方面提供了便利&#xff0c;但在撰写硕士、博士等长篇论文时&#xff0c;却常常暴露出严重不足。有的工具缺乏必要的理论深度&#xff0c;而有的则…

作者头像 李华