MySQL 三层 B+ 树能存多少数据?

March 12, 2025 / 老大 / 4阅读 / 0评论/ 分类: 数据库

MySQL的InnoDB存储引擎中,B+tree默认的数据页大小为16KB

相关参数

  • 每个节点页大小为16KB(16384字节)

  • 假设每个数据记录的主键和数据大小为1KB(一般比1KB小)

  • 每个节点内部(非叶子节点)存储的是指向子节点的指针和索引键

三层B+tree的存储计算

  • 叶子节点:第三层是叶子节点,每个叶子节点可存储16条数据记录(16KB/1KB)

  • 第二层(中间层):假设每个指针6字节索引键(一般是bigint)8字节,那么每个中间节点页可以指向1170个叶子节点(16*1024/(6+8))

  • 第一层(根节点):同理,根节点可以指向1170个中间节点

一颗三层B+tree在MySQL中大致能存储2000万条记录(1170*1170*16=21902400,估算值)

InnoDB中页的大小

在InnoDB中,B+tree的每个节点通常对应一个页(Page),默认页大小为16K,可以通过innodb_page_size参数来修改页的大小(通常为4KB/8KB/16KB)

注意:

  • 在MySQL InnoDB中,主键索引 B+tree的叶子节点存储的是数据行的完整信息,包括主键和其他字段;

  • 每条记录(每个数据行)在 B+tree的叶子节点中按照主键顺序存储,这使得InnoDB存储引擎的B+tree不仅支持高效的单条记录查询,也支持范围查询。

#MySQL(21)

评论