Skip to content

Commit

Permalink
fix typo
Browse files Browse the repository at this point in the history
  • Loading branch information
darionyaphet committed May 28, 2021
1 parent a88e170 commit b0486c3
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions doc/Compaction.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ LSM树是一系列的层。每一层都是一个排序结果,可以被按照

原始LSM论文中的压缩算法使用 all-to-all的——所有Ln-1的数据会跟所有Ln层的数据合并。LevelDB和RocksDB的则是some-to-some的——Ln-1的部分数据和并进Ln层的部分数据(有覆盖的部分)

尽管leveled的写放大通常比tiered要大,但是在某些场景,leveled是有优势的。首先是按key顺序插入,一个RocksDB的优化大大减少这种场景的写放大。另一个是有倾向性的写操作,导致只有一小块的key会被更新。把RocksDB的压缩优先级设置为正确的树值,压缩过程应该在层数最小的,拥有足够空间存储写操作的层停止——他不会一致写到最大层。当leveled压缩是some-to-some模式,那么压缩只会对LSM树的一个写操作覆盖了的分片进行处理,这样可以让写放大比all-to-all模式小很多。
尽管leveled的写放大通常比tiered要大,但是在某些场景,leveled是有优势的。首先是按key顺序插入,一个RocksDB的优化大大减少这种场景的写放大。另一个是有倾向性的写操作,导致只有一小块的key会被更新。把RocksDB的压缩优先级设置为正确的数值,压缩过程应该在层数最小的,拥有足够空间存储写操作的层停止——他不会一致写到最大层。当leveled压缩是some-to-some模式,那么压缩只会对LSM树的一个写操作覆盖了的分片进行处理,这样可以让写放大比all-to-all模式小很多。

## Leveled-N

Expand All @@ -42,7 +42,7 @@ Leveled-N跟Leveled压缩算法很像,但是会有更小的写放大,更多

Tiered压缩通过增加读放大和空间放大,来最小化写放大。

LSM树仍旧可以看成是Niv Dayan和Stratos Idreos论文中讲到的一系列的层。么一层有N个排序结果。每个Ln层的排序结果都比上一层的排序结果大n倍。压缩合并同一层的所有排序结果来构造一个下一层的新的排序结果。这里的N与leveled压缩的扇出类似。合并到下一层的时候,压缩不会读/重写已经排序好的Ln层的结果。每层的写放大是1,远小于Leveled的扇出。
LSM树仍旧可以看成是Niv Dayan和Stratos Idreos论文中讲到的一系列的层。每一层有N个排序结果。每个Ln层的排序结果都比上一层的排序结果大n倍。压缩合并同一层的所有排序结果来构造一个下一层的新的排序结果。这里的N与leveled压缩的扇出类似。合并到下一层的时候,压缩不会读/重写已经排序好的Ln层的结果。每层的写放大是1,远小于Leveled的扇出。

一个比较接近Tiered的实现是合并相似大小的排序结果,不必关心层的概念(这个概念会引入一个特定大小的排序结果的目标数字)。大多数(实现)包含一些主压缩的概念,也就是包含最大的排序结果,然后还有一些条件用来触发主,和非主压缩。通常的情况是会导致大量的文件以及自己。

Expand Down

0 comments on commit b0486c3

Please sign in to comment.