【问题标题】:In LevelDB, are all the keys loaded in memory?在 LevelDB 中,所有的键都加载到内存中了吗?
【发布时间】:2022-08-05 10:56:50
【问题描述】:

因此,我一直在阅读有关 LevelDB 和其他在其实现中使用 Log Structured Merge Tree 的键值存储的实现。我对此有几个问题:

  • 即使在大型数据集的情况下,是否所有键都加载到 LevelDB 的内存中?
  • 如果不是,如何搜索关键字,是通过二分搜索还是任何其他算法?

    标签: implementation key-value-store leveldb


    【解决方案1】:

    所以,我确实发现有一个 memtable 将键和值保存在内存中,当这个 memtable 变得超过某个特定大小时 - 就会发生压缩过程。因此,memtable 被写入 SST 并被清空。因此,似乎所有的键都没有存储在内存中,LevelDB 确实使用 SST 文件中的重新启动点的概念对文件使用二进制搜索。

    【讨论】:

      【解决方案2】:
      1. 不会。只有一部分密钥保存在内存中。最近读和写的通常都在内存中

      2. 首先检查 memtable - 然后在每个 sstable 文件中从最高级别到最低级别搜索密钥

      【讨论】:

        猜你喜欢
        • 2021-04-14
        • 1970-01-01
        • 2018-11-21
        • 2013-05-12
        • 1970-01-01
        • 2013-05-14
        • 2016-01-01
        • 2020-04-22
        • 2012-11-17
        相关资源
        最近更新 更多