当前位置: 代码网 > it编程>数据库>Mysql > 【数据库】聊聊一颗B+树 可以存储多少数据

【数据库】聊聊一颗B+树 可以存储多少数据

2024年08月01日 Mysql 我要评论
聊聊一颗B+树 可以存储多少数据

我们知道数据库使用的数据结构是b+树,但是b+树可以存储多少数据呢,在面试中也是经常会问的问题,所以我们从根上理解这个问题。

操作系统层面

数据都是存储在磁盘中的,而磁盘中的数据都是以最新单位扇区进行分割。一个扇区的大小是512字节,也就是0.5kb
文件系统块中的块通常是8个扇区构成,所以一个文件系统块大概是4k,而存储引擎中最小存储单元是页,一个页是4个文件块组成,也就是16k
在这里插入图片描述

innodb引擎

show variables like 'innodb_page_size';

在这里插入图片描述
从中可以看到,innodb的存储引擎一页是16kb,因为本身是用b+树存储数据的,除了存储数据本身,还需要维护索引组织表。
在这里插入图片描述
查询过程大概如下:
1.根据索引找到对应位置的根页,因为根页在表空间中是固定的,所以说也就是page 3
2.找到根页后,通过二分查找的方式,找到id=3 在page4中
3.根据p4的指引,查找对应索引page 4的数据,找到数据id=3的数据。
所以你看数据库有多强大,通过对外抽象成sql进行操作,而内部维护事务、sql解析、连接、存储、查询等功能。

一颗树可以存放多少行数据

假设一个主键为bigint类型,长度是8字节,而指针大小在源码中是6字节,那么一条数据就是14字节。一页16kb 16384/14 1170条数据。一个高度为2的b+树 可以存放 1170 * 16 = 18720条数据。
一个高度为3的b+树 可以存放 1170 * 1170 * 16 = 21902400条数据。
所以千万级别的数据,页只需要3层b+树就可以。

(0)

相关文章:

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

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com