InnoDB中一个3层B+树大概可以存放多少数据?

在innodb存储引擎里面,最小的存储单元是页(page),一个页的大小是16Kb。可用如下命令查看:

SHOW VARIABLES LIKE 'innodb_page_size'
image.png

这就说明了一个页的大小为16384b,也就是16kb。


image.png

如果是3层的B+树,即存在一个根节点、若干个中间节点、若干个叶子节点,那么这棵B+树的存放总记录数为:根节点指针数 x 中间节点数 x 单个叶子节点记录行数。因为单个页的大小为16kb,而一行数据的大小为1kb,也就是说一页可以存放16行数据。然后因为非叶子节点的结构是:“页指针+键值”,我们假设主键ID为int类型,长度为11字节(byte),而指针大小在InnoDB源码中设置为6字节(byte),这样一共17字节(byte),因为一个页可以存放16384byte,所以一个页可以存放的指针个数为16384/17=963个。因此一个3层的B+树可以存放的数据行的个数为:963 x 963 x 16=14849000(行)。也就是说一个三层的B+树就可以存放千万级别的数据了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容