浅析存储引擎(4)-对比B-tree和LSM-tree

浅析日志结构的存储引擎(1)-bitcask
浅析日志结构的存储引擎(2)-SSTable和LSM-Tree
浅析存储引擎(3)-B-tree

一、磁盘碎片率

由于B-tree存储引擎按固定页写入,那么通常每一页都会有些空间无法使用。而LSM-tree不是面向页的,并且定期重写SSTable以消除碎片化,所以具有较低的碎片率。

二、写入速度

LSM-tree通常能够承受比B-tree更高的写入吞吐量,部分原因是具有较低的写放大(一次数据写入导致多次磁盘写入称为写放大),部分原因是以顺序方式写入紧凑的SSTable文件。虽然SSD支持更快的随机写入,但更低的写放大和碎片减少对于SSD仍然有益,以更紧凑的方式组织数据,从而在有限磁盘I/O带宽中支持更多的读写请求。

三、查询速度

没有绝对的答案,如果LSM-tree需要查询的数据都是最新刚写入的热数据,这个时候数据通常还在内存中,查询速度就会很快。假设查询的都是很久前写入的数据,LSM-tree可能需要搜索多个段,这时B-tree则可能更快。需要根据场景做基准测试。

四、LSM-tree的缺点

高写入吞吐量时,由于磁盘I/O带宽是有限的,意味着数据写入和数据合并会竞争磁盘I/O资源,如果配比不合理,那么磁盘上未合并的数据会不断增加,直到磁盘空间不足。

五、B-tree的优点

每个键恰好唯一对应于索引中的某个位置,而日志结构的存储引擎可能在不同的段中具有相同key的多个副本。如果在这种场景下需要支持事务,无疑B-tree更具竞争力。

 

参考《数据密集型应用系统设计》

原文出自:https://blog.csdn.net/daiyudong2020/article/details/104721566

end

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值