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+树就可以存放千万级别的数据了。

你可能感兴趣的:(InnoDB中一个3层B+树大概可以存放多少数据?)