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

相关推荐
不爱吃炸鸡柳35 分钟前
单链表专题(完整代码版)
数据结构·算法·链表
Morwit2 小时前
【力扣hot100】 1. 两数之和
数据结构·c++·算法·leetcode·职场和发展
田梓燊4 小时前
2026/4/11 leetcode 3741
数据结构·算法·leetcode
葳_人生_蕤5 小时前
hot100——栈和队列
数据结构
Meme Buoy7 小时前
18.补充数学1:生成树-最短路径-最大流量-线性规划
数据结构·算法
汀、人工智能7 小时前
[特殊字符] 第89课:岛屿数量
数据结构·算法·数据库架构·图论·bfs·岛屿数量
九英里路7 小时前
cpp容器——string模拟实现
java·前端·数据结构·c++·算法·容器·字符串
2401_892070988 小时前
顺序栈(动态数组实现) 超详细解析(C++ 语言 + 可直接运行)
数据结构·c++·顺序栈
漫霂8 小时前
二叉树的翻转
java·数据结构·算法
3秒一个大8 小时前
深入理解 JS 中的栈与堆:从内存模型到数据结构,再谈内存泄漏
前端·javascript·数据结构