使用OptimizeForPointLookup时进行迭代

时间:2018-09-02 17:17:17

标签: rocksdb

我有一个要求,我只需要进行点查找,但也需要进行迭代,但不必按任何特定顺序进行。我使用了OptimizeForPointLookup并使用了迭代器API,一切似乎都可以正常工作。但是,岩石文件的代码在options.h中针对OptimizeForPointLookup api进行了记录。

//如果不需要保持数据排序,请使用此选项,即永远不会使用 //一个迭代器,仅调用Put()和Get()API

我缺少什么吗?有趣的是,迭代似乎也按照排序的顺序进行。

1 个答案:

答案 0 :(得分:1)

OptimizeForPointLookup()API通过创建BLOOM FILTER并将Index类型设置为kHashSearch,从而使GET / PUT操作更快。顾名思义,kHashSearch在键上创建哈希,并使点查找更快。

对于正常的迭代器操作,索引类型设置为kBinarySearch。 默认情况下,RocksDB将数据按排序顺序插入到memtable中。优化点查找不会影响rocksDB的这种插入行为。

相关问题