news 2026/4/15 20:20:12

面试官: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/4/13 14:19:22

621-6575RC输出模块

621-6575RC 输出模块简介:621-6575RC 属于控制系统中的专用输出单元主要承担控制信号向现场设备的执行传递任务模块可根据控制策略输出对应的开关或控制信号适合对外部设备进行精确、有序的控制常配合各类执行元件实现动作控制模块在系统中起到信号放大与隔离的作用…

作者头像 李华
网站建设 2026/4/13 19:09:47

集商品展示、在线沟通、支付交易、社区互动于一体的综合性二手交易小程序系统源码

温馨提示:文末有资源获取方式面对庞大的二手交易市场需求,拥有一套功能齐全、运行稳定的独立商城系统是成功起步的关键。我们为您提供一款集商品展示、在线沟通、支付交易、社区互动于一体的综合性二手交易系统源码,旨在帮助您快速搭建一个专…

作者头像 李华
网站建设 2026/4/10 21:52:35

Nessus自定义策略模板编写指南

一、自定义策略的优势与应用场景 Nessus作为业界领先的漏洞扫描工具,其自定义策略功能允许软件测试人员针对特定需求(如只扫描高风险漏洞或特定服务)创建可复用的模板,从而显著提升扫描效率和精准度。例如,在测试Web应…

作者头像 李华
网站建设 2026/4/10 16:11:35

PPT内容粘贴到CKEDITOR为何动画失效?

教育行业文档导入功能开发记录 一、需求分析与技术选型 作为项目组核心开发成员,我负责实现后台试卷发布模块的文档导入功能,需支持Word/Excel/PPT/PDF四种格式的解析,并保留原始样式与图片。经过技术评估,决定采用以下技术栈&a…

作者头像 李华
网站建设 2026/4/7 18:41:18

大数据基于Python的电商用户消费行为分析

目录 大数据环境下电商用户消费行为分析的Python实现核心分析流程典型分析场景技术栈组合示例 项目技术支持可定制开发之功能亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作 大数据环境下电商用户消费行为分析的Python实现 电商平台通…

作者头像 李华