总结:
Mysql的innodb的最小加载单位是页,一页的大小默认是16K(可自己进行配置)。
文件系统(如XFS/EXT4)的最小单位是快,一个块的大小为4K。
计算机中,最小的存储单位是扇区,一个扇区的大小为字节。
b+树的数据结构总结:
b+树中的一个节点就是innoDb的一个页(方便加载与存储),即大小为16K。
非叶节点不保存数据,只保存主键值和指向下层子节点的指针。
叶子节点由一组键值对和一个指向同层下一页的指针(链表),这里键值对是存储的主键值和数据。
计算三层树能存储多少数据如上图,三层树包含两层非叶节点(包含根节点)和一层叶几点。
先计算非页节点:
非叶节点不保存数据,只保存主键值和指向子节点的指针。
指针在InnoDB中为6字节,假数据库主键的类型是bigint,占8字节。那么一个非叶节点能保存的数据量为16*/14=(个)主键和指针对。第二层的存储的数量就是*=个主键和指针对。
再计算叶子节点存储多少数据:
假设数据的大小为1KB,那么一个叶子节点可以存储16条数据(忽略指针大小)。
最后三层B+树可以存储多少数据?
结果为x16=条数据,即xx16=。