开发者社区> 问答> 正文

Flink中的RocksDB的术语Compaction具体是什么?

Flink中的RocksDB的术语Compaction具体是什么?

展开
收起
游客vwuxaq6iqaowc 2021-12-09 14:07:21 682 0
1 条回答
写回答
取消 提交回答
  • LSM-Tree 能将离散的随机写请求都转换成批量的顺序写请求(WAL + Compaction),以此提高写性能。但也带来了一些问题:

    读放大(Read Amplification)。LSM-Tree 的读操作需要从新到旧(从上到下)一层一层查找,直到找到想要的数据。这个过程可能需要不止一次 I/O。特别是 range query 的情况,影响很明显。 空间放大(Space Amplification)。因为所有的写入都是顺序写(append-only)的,不是 in-place update ,所以过期数据不会马上被清理掉。 写放大。实际写入 HDD/SSD 的数据大小和程序要求写入数据大小之比。正常情况下,HDD/SSD 观察到的写入数据多于上层程序写入的数据。 RocksDB 和 LevelDB 通过后台的 compaction 来减少读放大(减少 SST 文件数量)和空间放大(清理过期数据),但也因此带来了写放大(Write Amplification)的问题。

    写放大、读放大、空间放大,三者就像 CAP 定理一样,需要做好权衡和取舍。

    压缩算法有很多种,RocksDB也支持很多种,这里我们看两个经典的压缩算法及区别

    2021-12-09 14:07:40
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Flink CDC Meetup PPT - 龚中强 立即下载
Flink CDC Meetup PPT - 王赫 立即下载
Flink CDC Meetup PPT - 覃立辉 立即下载