LSM-Tree和B(+)-Tree的主要区别以及优劣势是什么

【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
【资源配置】
【附件:截图/日志/监控】

LSM-Tree和B(+)-Tree的主要区别以及优劣势是什么?

我记得看视频的时候老师说 LSM-Tree 是空间替换时间 对写比较友好。我理解LSM-Tree是顺序写,类似我写的所有的数据都是堆积起来的,B(+)-Tree是数据都有各自对应的位置。对写不友好但是对读比较友好

通过比较B+tree和LSM-tree的各种放大,我们可以得出结论,LSM-tree的写性能比B+tree好,而读性能不如B+tree。TiKV 使用 LSM-tree 而不是 B-tree 作为其底层存储引擎的主要目的是因为使用缓存技术来提升读性能比提升写性能容易得多。

这篇文章可以阅读一下:
https://tikv.org/deep-dive/key-value-engine/b-tree-vs-lsm/

1 个赞

顺序写 与 随机写的对象是内存,不是磁盘。不管是写还是读,都是直接操作内存。落到文件系统层,或者是存储层,都是随机读写的。 LSM是顺序写容易理解:跟日志一样在内存中顺序写入。 B+TREE是随机写:拿oracle举例子,oracle的底层存储引擎的最小读写单元是块,而不同的表是不同的块,缓存到内存中就是随机读写了。

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。