估算一下mysql的b树索引能存储的数

基础

总结:

Mysql的innodb的最小加载单位是页,一页的大小默认是16K(可自己进行配置)。

文件系统(如XFS/EXT4)的最小单位是快,一个块的大小为4K。

计算机中,最小的存储单位是扇区,一个扇区的大小为字节。

b+树的数据结构

总结:

b+树中的一个节点就是innoDb的一个页(方便加载与存储),即大小为16K。

非叶节点不保存数据,只保存主键值和指向下层子节点的指针。

叶子节点由一组键值对和一个指向同层下一页的指针(链表),这里键值对是存储的主键值和数据。

计算三层树能存储多少数据

如上图,三层树包含两层非叶节点(包含根节点)和一层叶几点。

先计算非页节点:

非叶节点不保存数据,只保存主键值和指向子节点的指针。

指针在InnoDB中为6字节,假数据库主键的类型是bigint,占8字节。那么一个非叶节点能保存的数据量为16*/14=(个)主键和指针对。第二层的存储的数量就是*=个主键和指针对。

再计算叶子节点存储多少数据:

假设数据的大小为1KB,那么一个叶子节点可以存储16条数据(忽略指针大小)。

最后三层B+树可以存储多少数据?

结果为x16=条数据,即xx16=。




转载请注明:http://www.aierlanlan.com/cyrz/5835.html