mysql 数据库索引b+树深度问题

mysql 数据库索引b+树深度问题常见面试题 mysql 数据库一颗 b 数据深度大概是多少 这要从 b 树的结构和数据库索引大小去分析问题 索引字段占内存大小 指针占内存大小 6 字节 6Byte 或者 6B 1 先看看 b 树结构下面看一颗树第一行中 1 320 为索引数据排序后的数据范围 1 30 320 32 对应的是页指针 指向下一页 b 树非叶子节点存放的都是 key nest 指针 叶子节点存放数据 在 mysql 索引 b 树中 非叶子节点键值数 子节点数 2 计算在 mysql 索引中索引页默认大小 16kS

常见面试题:mysql数据库一颗b+树深度大概是多少?

这要从b+树的结构和数据库索引大小去分析问题,索引字段占内存大小,指针占内存大小(6字节 6Byte,或者6B)

1、先看看b+树结构

下面看一颗树

mysql 数据库索引b+树深度问题

第一行中,1,320为索引数据排序后的数据范围,这里叫键值key,1-30,320- 32 对应的是页指针,指向下一页

* b+树非叶子节点存放的都是key+nest指针。叶子节点存放数据

*在mysql索引b+树中,非叶子节点键值数=子节点数

2、计算

在mysql索引中索引页默认大小16k

SHOW VARIABLES LIKE 'innodb_page_size';

mysql 数据库索引b+树深度问题

一页可以理解成一个节点(非叶子节点或者叶子节点)

先假设一个变量

每行数据量大小1K

索引字段Int:4字节(4byte)

bigint:8byte

verchar:一个字符占3byte

那么一页可以最多有多少子节点呢(bigint而言)指针在InnoDB中为6字节

16384/(8+6) = 1170

在叶子节点中每页16K,每行数据1K,那么就是16条记录

所以b+树深度和数据库数量的关系

1170(n-1)次方 * 16

深度=3的b+树

1170 *1170 *16 = (2千万数据)

所以一般数据库b+深度也就3-5层

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/217026.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午10:31
下一篇 2026年3月18日 上午10:31


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号