【数据库】数据库索引结构分析,MySQL单表最多能存放多少数据

经常听到MySQL单表最多能存放2千万数据,多了就要考虑分表,依据是什么呢?

 本文以MySQL为例,默认数据页大小是16KB。

【数据库】数据库索引结构分析,MySQL单表最多能存放多少数据_第1张图片

 索引内容结构

非叶子节点

主键+页号

假如:

主键是bigint,8bit;页号是4bit,一共12bit。一页总数:15K%12bit=1280条。

再假如每行数据大小为1Kb,每个叶子节点能存放数据就是15K%1K=15条。

一层的B+树存放数据是15

二层的B+树存放数据是1280*15

三层的B+树存放数据是1280*1280*15=2400万

因为考虑到磁盘IO性能问题,当超过3次时性能会急剧下降。如果每行数据只有250bit,单页数据可存放60条,三层B+树可存放接近1亿了,访问速度一样不会慢。

你可能感兴趣的:(Java面试题,软件研发,数据库,数据库)