gpt4 book ai didi

leveldb - 为什么rocksDB需要多个级别?

转载 作者:行者123 更新时间:2023-12-02 18:39:11 26 4
gpt4 key购买 nike

rocksDB 1 级中的所有键都已排序。因此我们可以在这个关卡中快速获得 key 。为什么rocksDB还需要将level 1的文件压缩到level 2?

我在 LevelDB 的 doc 上找到了解释:如果同一目录下的文件太多,打开一个目录下的文件会很慢。但是,正如文档中提到的,我们可以使用分片来解决这个问题。我认为分片比压缩容易得多。我说得对吗?

提前致谢!

最佳答案

多个级别可以减少写入放大。

由于 level 0 上的数据未排序,因此它可能与 level 1 上的大部分数据重叠。这意味着从 level0 -> level1 的压缩需要压缩大部分数据,这种情况经常发生。如果您还有 1 个级别:level2,则 >90% 的数据位于级别 2,因此 level0->level1 压缩会小得多,从而减少写入放大压实。级别越高,一般来说写放大越小,但读放大越高,因为需要读取的级别越多。

这不仅仅是RocksDB,而是所有LSM-tree。在 RocksDB 中,您实际上可以通过设置 num_levels 将级别数配置为 2,我们不建议在正常用例中这样做:https://github.com/facebook/rocksdb/blob/0ed8cb666de61d2e18bbb1fc90e05b734cee02de/include/rocksdb/advanced_options.h#L433-L434

关于leveldb - 为什么rocksDB需要多个级别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68297612/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com