柠檬少年|腾讯面试官用「B+树」虐哭我了( 二 )
如果索引太多 , 依然不能完全存放于内存中 , 那我们是不是可以考虑将索引也存放于磁盘中?如何高效的在磁盘中组织索引的结构?这就引入了B+树 。
B+树
- 让节点大小等于块大小
- 内部节点与叶子节点
- B+树使用双向链表的方式 , 具有良好的范围查询能力和灵活的调整能力
B+树是一个m阶的多叉树 , 所以B+树中的一个节点可以存放m个元素的数组 , ok , 这样的话 , 只需要几层的b+树就可以索引数据量很大的数了 。 比如1个2k的节点可以存放200个元素 , 那么一个4层的B+树就能存放200^4 , 即16亿个元素 。
如果只有四层 , 意味着我们最多访问磁盘4次 , 假设目前每个节点为2k , 那么第一层就一个节点也就2k , 第二层节点最多200个元素 , 一共就是0.8M 。 第三层200^2 , 也就是40000个节点 , 一共80M 。 对于当前的计算机而言 , 我们完全可以将前面三层存放于内存中 , 只需要将第四层存放于磁盘中 , 这样我们只需要和磁盘打一次交道就分手 , 也就是面试想知道的为什么要分为内部节点与叶子节点 。
B+树如何进行动态的调整上面介绍了B+树的结构和查询原理 , 现在我们看看B+树增加和删除是怎么个情况
现在我们以三个元素的B+树 为例 , 假设目前我们要插入ID为6=5的元素 , 第一步先查找对应的叶子节点 , 如果叶子节点没有满 , 直接插入即可
推荐阅读
- 彭坦|他曾是乐队主唱颜值天花板,娶名模12年0绯闻,42岁仍是少年
- 鲜闻联播|二话不说!拔剑指向酒馆老板,笑话:少年只身来到一家酒馆
- 战斗机,军事|这张迟来的“全家福”,14岁少年等了14年!
- [影视]腾讯影业、新丽传媒、阅文影视联合发布56个项目
- 暖夏少年|韩国5G陷入绝境,三星暗示华为才能拯救,最早布局最早弃用
- 腾讯时尚|今年的毛衣,选纯色就对了!But…
- 盛锐游戏视野于婷|一别71年后重回故土,母子白发相见,15岁少年瞒着母亲偷偷参军
- 文娱商业观察《热血满满的弟弟们》燃爆收官,腾讯微视内容生态跃进
- 腾讯科技OPPO发布Enco X真无线耳机:丹拿调音支持主动降噪,售价999元
- 左手时尚右手家庭|也不是华为,而是每天赚10亿的它,深圳最“赚钱”公司!不是腾讯
