所以一个2层高的b+树能存储的行记录数大约为1170*16=18720 3层为1170*1170*16约等于2190w 参考:b+树图文详解,漫画:B+树,B+树层数计算(面试官直呼内行),公众号:程序员小灰
那么两层(一层非叶子节点,一层叶子节点)的B+树可以保存1170*16=18720条数据。三层(两层非叶子节点,一层叶子节点)的B+树可以保存1170 * 1170*16=21902400条数据。 因此200万条数据的表其实就是3层高。 在InnoDB 中 B+ 树深度一般为 1-3 层。3层就已经能满足千万级的数据存储。
INT存储大小为4个字节(32位)。索引树上每个节点除了存储KEY,还需要存储指针。所以每个节点保存的KEY的数量为pagesize/(keysize+pointsize)(如果是B-TREE索引结构,则是pagesize/(keysize+datasize+pointsize))。 假设平均指针大小是4个字节,那么索引树的每个节点可以存储16k/((8+4)*8)≈171。那么:一个拥有3000w...
平衡二叉树(AVL树) 符合二叉查找树的定义,其次必须满足任何节点的两个子树的高度之差的绝对值不超过1。 平衡二叉树相比于二叉查找树来说,查找效率更稳定,总体的查找速度也更快,平衡二叉树的查询速度的确很快,但是维护一棵二叉树的代价是非常大的,通常来说,需要1次或多次左旋或右旋来得到插入,更新和删除后树的平...
接下来,我们先画一个只要两层高的B+树结构图。 假设第一层根节点存在以下情况:索引1对应页指针地址10,索引5对应页指针地址30,索引8对应页指针地址50。 第二层节点作为叶子节点,存放的是大小为16kb的页数据,页数据里每一行记录大小为1kb,那么,一个叶子节点的页里就可以存放16条数据。
前面我们计算过,2层的B+树理论上可以存放18000条左右,笔者测试大约13000条数据左右,B+树就会成为3层了。 pageoffset00000003,pagetype<B-treeNode>,pagelevel<0002>数据页总记录数:13000Totalnumberofpage:1472B-treeNode:933 原因也不难理解,因为每个页不可能只放数据本身。
B+树是多路平衡树,它能通过比较矮的树结构来存储千万级别的数据量,而树的层高决定数据的检索次数(磁...
红黑树又称平衡二叉树,相比二叉树可能存在变成链表的风险,会在查询好很多,但是依旧无法解决层高过高的问题,层高过高,则证明比对数据比较多,会影响查询效率 Hash表 对索引的key进行一次hash计算就可以定位出数据存储的位置,很多时候Hash索引要比B+ 树索引更高效,但仅能满足 “=”,“IN”,不支持范围查询,还会存在hash...
今天手子二面,甚至问了innodb中b+树层高,但是项目一点不问。。。_牛客网_牛客在手,offer不愁