InnoDB 一棵 B+ 树可以存放多少行数据

参考:https://mp.weixin.qq.com/s/BWlkrHiB-uP6fDnsxtKU0Q
问:一棵B+数可以存放多少行数据。
这个就得因地制宜了。首先,InnoDB底层的数据页大小默认为16KB,一般来说,生产环境一行数据为1KB左右,那么一个数据页可以存放16条数据。剩下的只要计算有多少个数据页就行了。
InnoDB的一个页可以为索引页,也可以为数据页。数据页上文已分析。对于索引页,里面数据是怎么存放的呢?索引页存放的是主键和指针(6 Byte),若建表时没有指定主键,mysql会自动创建一个6Byte的主键。一般数据库中我们使用bigint的自增id作为主键(8Byte),那么一个<主键,指针>对大小为14Byte。一个16KB的索引页可以存放161024/14=1170个单元。
一般树高为3层,那么对应的数据页有1170
1170个,数据行数为1170117016=2000W行。

同时B+树相对于B树的优点在于,B+树只在叶子节点存放数据,那非叶子节点的出度就高了,树会矮胖,而B树会瘦高,自然查询同样的数据B+树的IO次数更少。

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

推荐阅读更多精彩内容