LSM树与B+树优缺点分析

  1. LSM树优化了顺序写,因此写性能很好,但在查询上: 需要从Level 0到Level n一直顺序查下去。极端情况是LSM树中不存在该数据,则需要遍历L0->Ln,最后返回空集。

解决方法是用布隆过滤器优化查询。

  1. B+树范围查询性能很好,缺点包括:

  2. 随机写的性能差‌:B+树每次插入或更新操作可能需要访问不同的叶子节点,导致每次写操作都需要随机读写。

  3. 更新操作的代价高‌:每次更新操作都需要修改索引树,可能会触发写锁,阻塞数据查询操作,尤其是在并发写的情况下,性能会更差‌。

  4. 占用空间大‌:B+树索引结构会占用较多的存储空间,尤其是在数据库增大时,这种占用会更加显著‌

以下几种情况可能表现不佳:

  1. 高并发下的分裂合并 2.更新 3.树比较深的时候 4. 数据分布不均匀:可能会导致某些分支的节点过于密集,而其他分支则比较稀疏。

总结:B+树读快写慢, LSM树写快读慢(所以HBase用布隆过滤器弥补读问题),两者适用场景互补。

参考: https://zhuanlan.zhihu.com/p/415799237

相关推荐
深邃-2 分钟前
【数据结构与算法】-二叉树(2):实现顺序结构二叉树(堆的实现),向上调整算法,向下调整算法,堆排序,TOP-K问题
数据结构·算法·二叉树·排序算法·堆排序··top-k
叼烟扛炮8 小时前
C++第二讲:类和对象(上)
数据结构·c++·算法·类和对象·struct·实例化
MegaDataFlowers11 小时前
206.反转链表
数据结构·链表
CN-Dust12 小时前
【C++】while语句例题专题
数据结构·c++·算法
xieliyu.14 小时前
Java手搓数据结构:从零模拟实现无头双向非循环链表
java·数据结构·链表
如何原谅奋力过但无声16 小时前
【灵神高频面试题合集01-03】相向双指针、滑动窗口
数据结构·python·算法·leetcode
jieyucx17 小时前
Go 数据结构入门:线性表、顺序表、链表
数据结构·链表·golang
阿维的博客日记17 小时前
zset为什么要用到skiplist+Dict的数据结构
数据结构·skiplist
编程之升级打怪19 小时前
KMP查询算法的匹配串的前缀后缀相同的最大长度
数据结构
没文化的阿浩20 小时前
【数据结构】排序(2)——直接选择排序、堆排序
数据结构·算法·排序算法