LCS 来解决STCS 的空间放大问题。它还减少了读取放大(每个读取请求所需的平均磁盘读取数)。
Leveled compaction 将小的 sstables(“碎片”)划分为多个级别:
级别 0 (L0) 是新的 sstables,最近从内存表中刷新。随着它们的数量增加(并且读取速度变慢),我们的目标是将 sstables 从这个级别移到下一个级别。其他每个级别,L1、L2、L3 等,都是一个大小呈指数增长的单次运行:L1 是 10 个 sstables 的运行,L2 是 100 个 sstables 的运行,L3 是 1000 个 sstables 的运行,以及很快。(因子 10 是 Scylla 和 Apache Cassandra 中的默认设置)。
在解决或至少显着改善空间放大问题的同时,LCS 使另一个问题,即写入放大问题变得更糟。
“写放大”是每一个新刷新的sstable数据我们必须写入磁盘的字节数。写放大总是高于1.0,因为我们将每条数据都写入commit-log,然后再写入再次到一个sstable,然后每次压缩涉及到这条数据并将其复制到一个新的sstable,这就是另一个写入。
在此处阅读更多相关信息:
| 归档时间: |
|
| 查看次数: |
444 次 |
| 最近记录: |