lineitem 表的数据行数为 600 多万,B+ 树高度为 3,customer 表数据行数只有 15 万,B+ 树高度也为 3。 可以看出尽管数据量差异较大,这两个表树的高度都是 3,换句话说这两个表通过索引查询效率并没有太大差异,因为都只需要做 3 次 IO。 那么如果有一张表行数是一千万,那么他的 B+ 树高度依旧是 3...
所以在 InnoDB 中 B+ 树高度一般为 1-3 层,它就能满足千万级的数据存储。 在查找数据时一次页的查找代表一次 IO,所以通过主键索引查询通常只需要 1-3 次 IO 操作即可查找到数据。
不一定是3层啊,可以扩展到多层,道理是一样的。检索的时候沿着根开始找,直到找到对应的叶子节点,就是要找的数据了。
根据上面分析,一个页能存放的索引键值+指针数量约为:16282 ÷ 14 ≈ 1163。 所以,一颗3层B+树,主键设置为int类型(4字节),数据行大小约定为1k,能保存的数据约为:1163 * 1163 * 16k/1k ≈ 2100w。 请帮忙顺手点个赞,祝您越来越美丽。 编辑于 2022-02-20 22:14 内容所属专栏 面试官问系列 整理的一些...
如果是3层的B+树,即存在一个根节点、若干个中间节点、若干个叶子节点,那么这棵B+树的存放总记录数为:根节点指针数 x 中间节点数 x 单个叶子节点记录行数。因为单个页的大小为16kb,而一行数据的大小为1kb,也就是说一页可以存放16行数据。然后因为非叶子节点的结构是:“页指针+键值”,我们假设主键ID为int类型...
一个高度为 3 的 B+ 树大概可以存放 1170 × 1170 × 16 = 21902400 行数据,已经是千万级别的...
红黑树(二叉平衡树) B-tree B+tree 数据结构 如果想要了解为什么会选用B+tree,首先我们需要好好了解目前所知的存储数据的一些数据结构 二叉树 二叉树,想必大家不会陌生,因为在我们刚学计算机数据结构想必大家都有学过二叉树,他的数据结构特点是以根节点为头,每次插入的数据右边的总会大于左边的数据,以此来展开相应...
如果B+树只有3层,则最多能存放 1000 * 1000 * 100 = 100000000 如果B+树只有4层,则最多能存放 1000 * 1000 * 1000 * 100 = 100000000000(一千亿) 所以,我们一般用到的B+树不会超过4层,也就意味着通过主键查找记录时,最多只需要进行4个页面的查找就可以找到。
我们假设B+树一个节点可以有100个关键字,那么3层的B树可以容纳大概1000000多个关键字(100+101100+101101*100)。而红黑树要存储这么多至少要20层。所以使用B树相对于红黑树和AVL可以减少IO操作 大纲 在了解 B树、B+树、AVL树、红黑树 之前,我们先看一下各种树型结构的大致实际应用场景: ...
一个高度为 3 的 B+ 树大概可以存放 1170 × 1170 × 16 = 21902400 行数据,已经是千万级别的数据量了。 大多数项目也就是这个量级的数据了吧?再大的……也该拆分拆分了。 有用1 回复 无心流泪: 这个数据是怎么计算出来的? 回复2019-10-11 ...