可以通过查询语句查看:show Variables like 'innodb_page_size'
查询结果为16384字节。用1kb等于1024字节的方法可以计算出16384/1024=16kb,表示MySql数据库的默认页大小为16kb。
假设一行数据占用1kb的空间。但事实上,除了字段较多的宽表外,很多简单的表行记录都远远小于1kb的空间。这里我们使用最坏的情况,假设一行记录的大小为1kb。那么,一个16kb的页可以存储16行数据。
接下来我们先画一个只有两层高的B+树结构图。
假设第一层根节点有如下情况:索引1对应页指针地址10,索引5对应页指针地址30,索引8对应页指针地址50。
二级节点作为叶子节点,存储页面数据,大小为16kb。页数据中每行的记录大小为1kb。那么,一个叶子节点的一页可以存储16条数据。
现在我们知道一个叶子节点页可以存储16条数据,那么我们只需要知道根节点中存在多少个页地址指针,就可以通过“根节点页地址指针的数量*根节点页地址指针的数量”来计算。记录在单个叶节点中的行数”。
那么,根节点中可以存放多少个索引:页地址指针数据呢?
当节点大小为16kb时,我们只需要知道索引键值和页地址指针的大小之和。
据一些资料显示,在MySql数据库中,指针地址大小为6个字节。如果索引是bigint类型,则为8字节。两者合计为14字节。
接下来,通过下面的计算步骤,就可以计算出两层B+数可以存放多少条数据——的记录。
1、首先计算一个节点的字节大小:16kb * 1024=16384 字节。
2、16384字节/14字节=1170,也就是说根节点有1170个页地址指针,那么每个页地址指针指向的叶子节点可以存储16条数据。
3、然后根据“根节点页地址指针的数量*单个叶子节点的记录行数”,计算出1170*16=18720条记录。可见两层B+号可存储18720条记录。当然,这个数字也有出入。仅供参考。
既然我们知道两层B+数可以存储18720条数据,那我们是不是可以进一步用三层来计算呢?
简单画出三层B+数存储数据计算逻辑——
1、根节点最多有1170个指针;
2.说明第二层最多会有1170个子节点,同时每个子节点最多有1170个指针;
3、那么第三层叶子节点的数量可以通过“第二层最大节点数1170*每个节点最大指针数1170”来计算,即1170 * 1170
4、最后计算第三层所有叶子的数量*每个叶子节点存储的16条数据;
最后是1170 * 1170 * 16=21902400,大约是2000万条数据。
标签:
用户评论
哇,这个计算逻辑真是强大,之前一直以为InnoDB只能处理小量数据呢,2000万条数据量确实很可观。
有15位网友表示赞同!
这个计算逻辑听起来好复杂,不过对于数据库来说,这种处理能力太重要了。
有15位网友表示赞同!
2000万条数据,我之前的项目里数据量还没这么夸张,但这个逻辑应该能帮大忙。
有13位网友表示赞同!
InnoDB的三层B+树,听起来就像是数据库的超级英雄,处理数据能力这么强。
有5位网友表示赞同!
2000万条数据,这个数字让人敬畏,InnoDB是怎么做到的?太想了解背后的技术了。
有16位网友表示赞同!
这个计算逻辑真让人惊叹,以前只听说过InnoDB的性能好,现在才知道它这么厉害。
有20位网友表示赞同!
2000万条数据,对于很多企业来说都是日常操作,InnoDB的表现真是太棒了。
有13位网友表示赞同!
InnoDB的三层B+树,存储2000万条数据,这是不是意味着数据库的扩展性也很好呢?
有15位网友表示赞同!
学到了新知识,原来InnoDB这么强大,怪不得那么多开发者在用。
有5位网友表示赞同!
这个计算逻辑太实用了,我马上就要处理一个大数据量的项目,这回有信心了。
有8位网友表示赞同!
对于初学者来说,这个计算逻辑可能有点难懂,但一看就是高级操作。
有5位网友表示赞同!
2000万条数据,想想都头疼,但InnoDB的处理方式让我对数据库有了新的认识。
有19位网友表示赞同!
这个计算逻辑太复杂了,我可能得好好研究一下,不然以后的项目可能就用不上。
有11位网友表示赞同!
InnoDB的三层B+树,存储2000万条数据,这是不是意味着数据库的查询效率也很高?
有15位网友表示赞同!
2000万条数据,对于我们这些做数据分析的人来说,InnoDB的性能太关键了。
有18位网友表示赞同!
这个计算逻辑让我对数据库有了更深的理解,也让我对InnoDB的信任更上一层楼。
有7位网友表示赞同!
对于数据库来说,存储2000万条数据已经是非常高的要求了,InnoDB做到了,太棒了。
有5位网友表示赞同!
学习了,这个计算逻辑让我对InnoDB的性能有了全新的认识,感觉可以挑战更大的项目了。
有19位网友表示赞同!
InnoDB的三层B+树,存储2000万条数据,这背后一定有很多优化技巧,期待看到更多的技术分享。
有5位网友表示赞同!