MySQL 三层 B+ 树能存多少数据?
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不仅支持高效的单条记录查询,也支持范围查询。
评论