为什么说LSM会较少写?我的理解,同一行记录,在多次转储和合并过程中,也有写放大的问题吧

我的理解,同一行记录,在多次转储和合并过程中,也有写放大的问题吧

7 个赞

LSM 的优势是规避随机写,把更新批量顺序落盘,不是降低总写入量。确实存在写放大,同一行多次更新,经过多次转储、合并,会反复重写数据。它换来的是很高的写入吞吐,写放大是要付出的成本。

3 个赞

转储合并是攒批,顺序写入。

2 个赞

点赞~~

1 个赞

LSM 并非“写放大更少”,而是‌将随机写转化为顺序写,大幅降低单次写入的 I/O 开销和延迟;其确实存在写放大(Compaction 导致数据重写),但相比 B+ 树在高频随机更新下的页分裂、原地重写等代价,‌整体写入吞吐更高、对存储介质磨损更可控。‌‌

2 个赞

不是吧,转储与合并就是为了解决写放大的问题

2 个赞

是的,理解正确

1 个赞

收藏

我记得确实有写放大问题

打卡!!!

:sweat_smile: :sweat_smile: :sweat_smile:

你这个质疑是对的——“LSM 减少写”这句话本身是片面的,严格说是“减少随机写”,不是减少总写入量;而转储/合并(compaction)带来的写放大是 LSM 公认代价,OceanBase 也不例外

  • “LSM 减少写” = 减少前台随机写、把写延迟平摊到后台,不是总 IO 字节少

  • “LSM 有写放大” = compaction/merge 把同一行反复读写,总写入 ≥ 原数据若干倍