所以在 InnoDB 中 B + 树高度一般为 1 - 3 层,它就能满足千万级的数据存储。在查找数据时一次页的查找代表一次 IO,所以通过主键索引查询通常只需要 1 - 3 次 IO 操作即可查找到数据。 五、最后回顾一道面试题 有一道 MySQL 的面试题,为什么 MySQL 的索引要使用 B + 树而不是其它树形结构?比如 B 树?
B+树一般有两到三层,由于其高扇出,三层就能支持2kw以上的数据,且一次查询最多1~3次磁盘IO,性能也还行。 存储同样量级的数据,B树比B+树层级更高,因此磁盘IO也更多,所以B+树更适合成为mysql索引。 索引结构不会影响单表最大行数,2kw也只是推荐值,超过了这个值可能会导致B+树层级更高,影响查询性能。 单表最...
OK,分析完高度为 2 的 B+ 树,同样的道理,我们来看高度为 3 的: 根页(page10)可以存放 1170 个指针,然后第二层的每个页(page:11,12,13)也都分别可以存放1170个指针。这样一共可以存放1170 * 1170个指针,即对应的有1170 * 1170个非叶子节点,所以一共可以存放1170 * 1170 * 16 = 21902400行记录。 我...
你认为B+树的一般需要多高(几层)呢? 还是动手数一数吧:1层,2层,3层,4层,5层?哦,最多4层就够了。 你或许会问,为什么只要四层就够了呢?其实在实际应用的过程中,能用到3层就不错了。因为树高了,人往上爬会很累的,更何况对于200斤(几十/上百G)的大胖子。 树高了,爬着累 下面我来分享下我是怎...
一颗m阶的B-树,有以下特征:❝根结点至少有两个子女;每个非根节点所包含的关键字个数 j 满足:⌈m/2⌉ - 1 <= j <= m - 1.(⌈⌉表示向上取整)有k个关键字(关键字按递增次序排列)的非叶结点恰好有k+1个孩子。所有的叶子结点都位于同一层。❞ 一棵简单的B-树如下:B+ 树简介 B+树是...
我们假设B+树一个节点可以有100个关键字,那么3层的B树可以容纳大概1000000多个关键字(100+101100+101101*100)。而红黑树要存储这么多至少要20层。所以使用B树相对于红黑树和AVL可以减少IO操作 大纲 在了解 B树、B+树、AVL树、红黑树 之前,我们先看一下各种树型结构的大致实际应用场景: ...
b+树一般2到4层,就可以满足千万级的数据存储 2.索引 索引是帮助MySQL高效获取数据的数据结构。数据库索引类似是一本书前面的目录,能加快数据库的查询速度,数据库数据就是书具体的内容。索引一般存在磁盘上 主键索引和非主键索引都是用B+Tree数据结构储存, ...
满二叉树:一颗高度为h,并且含有2^h-1个节点的二叉树称为满二叉树,即树的每一层都含有最多的节点。 完全二叉树:设一个高度为h,有n个节点的二叉树,当且仅当其每一个节点都与高度为h的满二叉树中编号为1~n的节点一一对应时,称为完全二叉树。
B-树是一种m阶平衡树,叶子节点都在同一层,由于每一个节点存储的数据量比较大,所以整个B-树的层数是非常低的,基本上不超过三层。 由于磁盘的读取也是按block块操作的(内存是按page页面操作的,一般是16k,是内存页面的整数倍,读1块,刚好放到4个内存页面上),因此B-树的节点大小一般设置为和磁盘块大小一致,这样一...
8.所有叶子结点位于同一层; 看着是不是有点懵 image 举个栗子,这就是一个B-树 image 对照上边的B-树特征,我们做一下说明 1、节点8左边的数值都是小于8的,右边的数值都是大于8的 2、以(003,006)节点为例,它有三个子节点,分别是 (001,002)、005、007 ...