Mysql一张表可以存储多少数据

Mysql一张表可以存储多少数据

在操作系统中,我们知道为了跟磁盘交互,内存也是分页的,一页大小4KB。同样的在MySQL中为了提高吞吐率,数据也是分页的,不过MySQL的数据页大小是16KB。(确切的说是InnoDB数据页大小16KB)。详细学习可以参考官网 我们可以用如下命令查询到。
 
 
 
通过上面的知识了解到。B+树,只有聚簇索引的叶子节点才会存储数据。大致如下:
 
 
那么我们以上图为例:
 
1: 主键索引为ID,ID假设为bigInt, 则需要8byte的字节存储,加上指向子节点的指针6byte(固定)。
总共是8 + 6 = 14byte
 
2:一个页为16kb = 16 * 1000 byte。那么16kb / 14byte ≈ 1170个数据。也就是一页可以存储1170个数据节点
 
3:那么根节点可以存储1170个节点。因为每个节点都可以向下指向。
也就是第二层,可以存储 1170 * 1170 = 1 368 900节点。
 
4:第一层是一个页,第二层为1170个页。第三层为 1170 * 1170个页。每个页16kb
因为最后一层是存储数据的,假设每行数据为1kb。那么每个页可以存储16行数据。
也就是第三行可以存储 1170 * 1170 * 16  = 21 902 400(两千万条数据)
 
 
那么也就是聚簇索引B+树三层就可以存储两千万条的数据,大致如下图:
 
 
 
posted @ 2022-09-23 17:32  程序员博博  阅读(3074)  评论(0编辑  收藏  举报