news 2026/9/30 23:08:52

面试官:MySQL表中有2千万条数据,B+树层高是多少?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
面试官:MySQL表中有2千万条数据,B+树层高是多少?

MySQL 默认存储引擎是 InnoDB,跟 MyISAM 相比,InnoDB 支持事务、支持行级锁、支持主键和外键、索引存储上使用 B+ 树。

那如果 MySQL 一张表存储了 2 千万条数据,B+ 树层高是多少呢?今天来聊一聊这个面试题。

InnoDB 存储

在 InnoDB 存储引擎中,是以索引组织表的方式存放数据的,也就是表中数据是根据主键顺序以索引的形式存放的。数据存储在 B+ 树中,每一个索引对应一棵 B+ 树。

我们知道,计算机中,磁盘存储数据的最小单位是扇区,一个扇区大小为 512B。而文件系统的最小单位是块,一个块大小是 4K。

那 InnoDB 具体是以什么单位来存放数据呢?InnoDB 是以页为单位存放数据的,一个页大小是 16K。如下图:

B+ 树索引

跟 MyISAM 不一样的是,InnoDB 使用聚簇索引,叶子节点存储数据,不用独立的行存储。下面是 MyISAM 的存储结构:

InnoDB 主键索引每个叶节点包含了主键值和所有的剩余字段。二级索引的叶节点中存储是索引键和主键值,以此作为指向行的“指针”。如下图:

B+ 树叶子节点存储了数据,非叶子节点(索引节点)则存储了 key 和指针。这样存储的优势是可以在索引节点通过二分查找快速找到数据所在页,时间复杂度为 O(log n)。找到数据页后再去数据页中找数据就很容易了。

前面讲到,InnoDB 以页为单位来存储数据,每页 16k,那如果一条数据占 1k 的空间,那每页可以存储 16 条数据。

而索引节点保存的是 key 和指针。假如 key 的数据类型是 bigint,占 8B,指针大小在 InnoDB 中固定占 6B,那索引节点占空间大小为 14B,那每页存放的索引节点就是 1170。

16 * 1024B/14B = 1170。

因此假如 B+ 树高度为 2 层,则存放的数据为 1170(页)* 16(每页 16 条数据)= 18720。 同理如果 B+ 树高度为 3 层,则存放的数据为 1170(页)* 1170(每页 1170 索引节点)* 16(每页 16 条数据)= 21902400。

篇幅限制下面就只能给大家展示小册部分内容了。整理了一份核心面试笔记包括了:Java面试、Spring、JVM、MyBatis、Redis、MySQL、并发编程、微服务、Linux、Springboot、SpringCloud、MQ、Kafc

需要全套面试笔记及答案
【点击此处即可/免费获取】​​​

回到问题,一张表中有 2 千万条数据,B+ 树有几层?如果小于等于 21902400 条,则 B+ 树是 3 层,如果大于 21902400,则 B+ 树是 4 层。

注意前提条件,一条数据占用空间大小是 1k,索引节点(索引节点)中 key 占用空间为 8B。

总结

本节以一道经典的面试题,引出了 MySQL 中 InnoDB 的存储结构。理解了这个存储结构,就可以很好的理解索引和数据查找原理了。

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

621-6550电源输出模块

621-6550 电源输出模块简介: 621-6550 是工业控制系统中使用的电源输出模块 主要用于为系统内其他模块或现场设备提供稳定电源 可将系统电源进行分配并输出到不同负载 适用于机架式或分布式控制系统结构 与控制器、电源输入模块配合使用 输出电压稳定&#xff…

作者头像 李华
网站建设 2026/9/29 1:52:52

621-9000逻辑控制器模块

621-9000 逻辑控制器模块简介: 621-9000 是工业自动化系统中的逻辑控制器模块 主要负责系统控制逻辑的运算与处理 可根据输入信号执行预设的控制程序 支持顺序控制、联锁控制等常见控制方式 用于协调各类输入、输出模块的工作 可作为控制系统的核心处理单元使用…

作者头像 李华
网站建设 2026/9/27 10:05:48

SpringAi-mcp高德

1.创建key 进入高德官网注册,创建key https://console.amap.com/dev/id/phone(官网) 2.编写yml文件 引入自己的key #高德的key AMAP-KEY: #自己的key,复制上 3.创建工具类 3.1AmapService package com.jiazhong.mingxing.ai.siliconflow.mcp.glm.service;im…

作者头像 李华
网站建设 2026/9/25 22:42:57

PDF转存CKEDITOR时文字重叠如何避免?

【穷学生の逆袭】99元预算搞定Word粘贴公式渲染的CMS升级方案 (附JSP后端Vue2代码接单群彩蛋🎉) 一、需求拆解与白嫖策略 作为川软大三狗,面对导师的"Word粘贴全家桶"需求,我摸了摸仅剩的99元,…

作者头像 李华
网站建设 2026/9/30 8:04:49

2026必备!专科生毕业论文AI论文工具TOP8测评

2026必备!专科生毕业论文AI论文工具TOP8测评 2026年专科生论文写作工具测评:为何需要这份榜单? 随着AI技术在教育领域的不断渗透,越来越多的专科生开始借助智能工具提升论文写作效率。然而,面对市场上五花八门的AI论…

作者头像 李华
网站建设 2026/9/30 13:27:50

粘贴WORD到CKEDITOR时表格变形如何处理?

军工级富文本内容迁移解决方案技术评估日志 2023年X月X日 于长沙研发中心 一、需求拆解与技术调研 1.1 核心需求矩阵 需求类型技术指标信创要求Word粘贴保留形状/表格/公式等复杂样式,图片自动转存OSS支持银河麒麟V10飞腾FT-2000环境文档导入支持Office/PDF格式解…

作者头像 李华