B+树 的一个节点大小=innodb的一页=4个操作系统页(一页4kb)=16kb(系统规定,不用纠结)
叶子节点只存储数据(索引值和链表指针占不考虑)
非叶子节点存储(索引值+指针)=8b(以bigint类型为例)+6b(指针大小为6个字节)=14b
假设一行数据=1kb(1kb大概有几千上万个字符,所以按1kb算一行数据不算少了)
那么按一个索引值来算:
叶子节点可以存放=1*16=16 条数据
非叶子节点(索引值+指针)=一个节点的数据/14b=16kb/14b=16*1024 / 14 = 1170 个 (索引值+指针)
如果树高度为2,可以存入多少条数据
因为高度为2,就2层,根节点就一个节点,一个节点有1170个指针,相当于有1170个叶子节点,一个叶子节点有16条数据,那么
结果=1770*16=18724 条数据
如果树高度为3,可以存入多少条数据
因为每个节点都有1170个指针,那么3层就是二层中所有的1170个指针也各自对应1170个指针,那么
结果=1170*1170 * 16 = 21902400 相当于2千多万
也就是说以bigint 为主键,按一行1kb为例,2千多万条数据,查3次