知识卡片
LSM写读取舍
内容
LSM 树把随机写先落到内存和顺序日志,再批量合并成磁盘有序文件。它用读路径变长、后台合并和写放大,换取高吞吐写入;Bloom Filter 和缓存常用于弥补读损失。
参考来源
- 位置:《大数据日知录:架构与算法》第3章《大数据常用的算法与数据结构》"3.3 LSM树"一节(源文件:_epub-src/OEBPS/text00008.html)
- 结论依据:原文明确"LSM树……的本质是将大量的随机写操作转换成批量的序列写,这样可以极大地提升磁盘数据写入速度……但是其对应付出的代价是读效率有所降低,这往往可以引入Bloom Filter或者缓存等优化措施来对读性能进行改善",并以LevelDB为例说明写入先落log文件与内存MemTable(SkipList实现)。
- 原始内容:LSM树(Log-structured Merge-tree)的本质是将大量的随机写操作转换成批量的序列写,这样可以极大地提升磁盘数据写入速度,所以LSM树非常适合对写操作效率有高要求的应用场景。但是其对应付出的代价是读效率有所降低,这往往可以引入Bloom Filter或者缓存等优化措施来对读性能进行改善……当应用写入一条Key:Value记录的时候,LevelDB会先往log文件里写入,成功后将记录插进MemTable中。