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+树三层就可以存储两千万条的数据,大致如下图:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值