一颗3层的B+树大概能存2000w行数据。
怎么算的
这里需要知道的前置知识:
- InnoDB引擎的最小存储单元是页,一页16KB,B+树的一个节点就是一页;
- 非叶子节点存储的是 主键 + 指针;
- 叶子节点存放的是数据;
计算条件:
- bigint类型的主键占8 Byte,指针占6Byte,那么一条非叶子节点的数据就是14Byte,为了避免混淆,后面我们把非叶子节点存放的数据称为指针;
- 假设一条完整数据的大小是1KB(方便计算);
那么,2层B+树能存储的数量:
3层B+树能存储的数量:
解释一下上面的图:
- 非叶子节点中,一个指针的大小是8 + 6 = 14 Byte,那么一个非叶子节点能存1170个指针;
- 叶子节点中,一条数据是1KB,那么一个叶子节点能存储16条数据;
- 每个指针指向的都是一个节点(一页),所以可以根据上一层节点中的指针数量,计算出下一层存储的指针或数据的数量;