mysqlB+树可以存多少数据(Innodb存储引擎)

it2023-02-10  53

答案是两千多万

1.该图是以名字字段建立索引,树的高度为3为例,叶子节点(第三层)的18 15…是我们存储的数据

图 1-1

2.B+树是以页(作为基本单位)来存储数据或者存储索引和指针
3.页是什么?如上图第一行有三个名字那个方框就是一个页当然,第二行和第三行也是
4.每页存储的数据量是16K mysql默认且可以修改,不信可自查

命令 : show VARIABLES like ‘innodb_page_size%’

图 1-2

16384/1024=16k
5.以bigInt 举例子 它是8个字节 一个指针是6个字节(不要问为什么,你就信了吧)bigInt是mysql 字段类型之一
6.如 图1-1 咱们来计算一下 第一页有多少指向第二层的指针(第一页和第二页只存了索引和指向下一级的指针)
7.16384/(6+8)≈ 1170
8.每一个指针都是一个页,那么第二层有多少页?答案是1170个页,那么每个页是不 也有1170个指针指向第三层,那么第二层有多少指针了?1170*1170 = 1368900
9.第三层是存数据的,那么他能存多少条数据呢?
10.每一个页咱们之前说了他能存16k大小的数据,而每一条数据大概是 1k 我们就按 1k 算,第二层有1368900个指针指向第三层,也就是说第三层有1368900个页,每一页可以存16条数据,那么第三层可以存16*1368900 =21902400

两千一百九十多万条数据。

注意:B+树只在最下存储数据

有不对的地方欢迎指正

最新回复(0)