草庐IT

B树-查找

B树系列文章1. B树-介绍2. B树-查找3. B树-插入4. B树-删除 查找假设有一棵3阶B树,如下图所示。下面说明在该B树中查找52的过程首先,从根结点出发,根结点有两个键40和70,52在40和70之间,因此查找根结点的第二个儿子结点 接着,查找根结点的第二个儿子结点,该结点的第一个键值为55,52小于55,因此查找52可能在该结点的第一个儿子结点上 此时到达叶子结点,遍历该结点的键值列表,发现52在该键值列表上,说明该B树上有目标键值,搜索结束到达叶子结点时,如果叶子结点上没有目标键值,说明B树上没有目标键值,搜索结束。 可以看出来,上述都给经历过的每个结点的 第一个不小于52的键

B树-查找

B树系列文章1. B树-介绍2. B树-查找3. B树-插入4. B树-删除 查找假设有一棵3阶B树,如下图所示。下面说明在该B树中查找52的过程首先,从根结点出发,根结点有两个键40和70,52在40和70之间,因此查找根结点的第二个儿子结点 接着,查找根结点的第二个儿子结点,该结点的第一个键值为55,52小于55,因此查找52可能在该结点的第一个儿子结点上 此时到达叶子结点,遍历该结点的键值列表,发现52在该键值列表上,说明该B树上有目标键值,搜索结束到达叶子结点时,如果叶子结点上没有目标键值,说明B树上没有目标键值,搜索结束。 可以看出来,上述都给经历过的每个结点的 第一个不小于52的键

MySQL索引底层为什么用B+树?看完这篇文章,轻松应对面试。

迎面走来了你的面试官,身穿格子衫,挺着啤酒肚,发际线严重后移的中年男子。手拿泡着枸杞的保温杯,胳膊夹着MacBook,MacBook上还贴着公司标语:“我爱加班”。面试开始,直入正题。面试官:你知道MySQL索引底层数据结构为啥用B+树?而不用B树、红黑树或者普通二叉树?我:这事谁知道作者咋想的?他可能是用B+树习惯了,个人爱好吧。面试官:你倒是挺看得开。今天的面试就先到这吧,后面有消息会主动联系你。后面还可能有消息吗?你们啥时候主动联系过我?实话实说的被拒,八股文背得溜反而被录取。好吧,等我看看一灯怎么总结的MySQL的八股文。我:要知道MySQL索引底层数据结构为啥用B+树,先要了解一下什

MySQL索引底层为什么用B+树?看完这篇文章,轻松应对面试。

迎面走来了你的面试官,身穿格子衫,挺着啤酒肚,发际线严重后移的中年男子。手拿泡着枸杞的保温杯,胳膊夹着MacBook,MacBook上还贴着公司标语:“我爱加班”。面试开始,直入正题。面试官:你知道MySQL索引底层数据结构为啥用B+树?而不用B树、红黑树或者普通二叉树?我:这事谁知道作者咋想的?他可能是用B+树习惯了,个人爱好吧。面试官:你倒是挺看得开。今天的面试就先到这吧,后面有消息会主动联系你。后面还可能有消息吗?你们啥时候主动联系过我?实话实说的被拒,八股文背得溜反而被录取。好吧,等我看看一灯怎么总结的MySQL的八股文。我:要知道MySQL索引底层数据结构为啥用B+树,先要了解一下什

一些有趣的B+树优化实验

作为目前数据库引擎的两种主要数据结构,LSM-tree和B+-tree在业界已经有非常广泛的研究。相比B+-tree,LSM-tree牺牲一定的读性能以换取更小的写放大以及更低的存储成本,但这必须建立在已有的HDD和SSD的基础上。探索前沿研究,聚焦技术创新,本期DB·洞见由腾讯云数据库高级工程师王宏博进行分享,主要介绍一篇2022年FAST的论文,主题为“基于硬件透明压缩的B+树优化”。本次分享的论文针对可计算存储SSD(支持硬件透明压缩)提出了三种有趣的设计方法,从而极大地减少了B+-tree的写放大(10X)以使其接近甚至超越LSM-tree。以下为分享实录:完整视频:https://v

一些有趣的B+树优化实验

作为目前数据库引擎的两种主要数据结构,LSM-tree和B+-tree在业界已经有非常广泛的研究。相比B+-tree,LSM-tree牺牲一定的读性能以换取更小的写放大以及更低的存储成本,但这必须建立在已有的HDD和SSD的基础上。探索前沿研究,聚焦技术创新,本期DB·洞见由腾讯云数据库高级工程师王宏博进行分享,主要介绍一篇2022年FAST的论文,主题为“基于硬件透明压缩的B+树优化”。本次分享的论文针对可计算存储SSD(支持硬件透明压缩)提出了三种有趣的设计方法,从而极大地减少了B+-tree的写放大(10X)以使其接近甚至超越LSM-tree。以下为分享实录:完整视频:https://v

B+Tree树

实际上它就是B树的变种,以一颗最大度数(max-degree)为4(4阶)的b+tree为例:所有的元素都会出现在叶子节点,叶子节点形成一个单向链表,每一个节点都会通过一个指针指向下一个元素。Mysql索引数据结构对经典的B+Tree树结构进行了优化。在原B+Tree树的基础上,增加了一个指向相邻叶子节点的链表指针,就形成了一个带有顺序指针的B+Tree,提高区间的访问性能。有利于数据库的排序操作。每个数据节点都是存储在一个页当中的。可以通过一个数据结构可视化的网站来简单演示一下。https://www.cs.usfca.edu/~galles/visualization/BPlusTree.

B+Tree树

实际上它就是B树的变种,以一颗最大度数(max-degree)为4(4阶)的b+tree为例:所有的元素都会出现在叶子节点,叶子节点形成一个单向链表,每一个节点都会通过一个指针指向下一个元素。Mysql索引数据结构对经典的B+Tree树结构进行了优化。在原B+Tree树的基础上,增加了一个指向相邻叶子节点的链表指针,就形成了一个带有顺序指针的B+Tree,提高区间的访问性能。有利于数据库的排序操作。每个数据节点都是存储在一个页当中的。可以通过一个数据结构可视化的网站来简单演示一下。https://www.cs.usfca.edu/~galles/visualization/BPlusTree.

Mysql b+树索引的数据结构

简介为什么Mysql考虑使用B+树,而不是B树,其实我们可以先了解下B树和B+树的特点来看下。B树特点※树的每个结点都会存储数据※单次查询不一定要遍历到树的根部,平均查询时间会比较快image.pngB+树特点※非叶子节点不存储数据,只存储(冗余)索引,索引包含主键和指针※叶子节点才真正存储数据※每个叶子节点互相链表相连,保证了范围查询的时效性(页之间用双向链表连接,数据间用单项链表链接)image.png※B+树只有叶子节点才存储数据,叶子节点包含双向指针指向,所以对于范围查询B+树明显优于B树。※IO对性能的影响,B树的每个节点都存储数据,而B+树只有叶子节点才存储数据,每个叶子所以查找相

Mysql b+树索引的数据结构

简介为什么Mysql考虑使用B+树,而不是B树,其实我们可以先了解下B树和B+树的特点来看下。B树特点※树的每个结点都会存储数据※单次查询不一定要遍历到树的根部,平均查询时间会比较快image.pngB+树特点※非叶子节点不存储数据,只存储(冗余)索引,索引包含主键和指针※叶子节点才真正存储数据※每个叶子节点互相链表相连,保证了范围查询的时效性(页之间用双向链表连接,数据间用单项链表链接)image.png※B+树只有叶子节点才存储数据,叶子节点包含双向指针指向,所以对于范围查询B+树明显优于B树。※IO对性能的影响,B树的每个节点都存储数据,而B+树只有叶子节点才存储数据,每个叶子所以查找相