前言
简单粗暴,句句精华
虽然莫得前言,但看完这篇博客,你将变的异常牛逼
B+树结构简述
跟其它tree结构一样,根节点只有一个,B+树的非叶子节点(包括根节点)可以有多个子节点,它的非叶子节点仅保存索引列和指针,不保存具体行记录;
如何计算层数
首先搞清楚一个常识,我们都知道计算机在存储数据的时候,有最小存储单元,这就好比我们今天进行现金的流通最小单位是一毛。
在计算机中磁盘存储数据最小单元是扇区,一个扇区的大小是 512 字节,而文件系统(例如XFS/EXT4)他的最小单元是块,一个块的大小是 4k,而对于我们的 InnoDB 存储引擎也有自己的最小储存单元——页(Page),一个页的大小是 16K。这意味着B+树的每个节点大小为16k,好,知道这个,计算层数就简单了,假设主键为bigint类型,我们知道innoDB的bigint占用8个字节,指针占用6个字节,8+6=14;再来说说行记录大小,常规的互联网项目行记录大小约为1k,那么一个叶子节点能存储的行记录数为16/1=16,非叶子节点能存储的数量为16*1024/14约等于1170,所以,得出两层的B+树能存储的行记录数大约为1170 * 16,三层为1170 * 1170 * 16;
ok我话说完,听懂掌声