我有一个要求,我只需要进行点查找,但也需要进行迭代,但不必按任何特定顺序进行。我使用了OptimizeForPointLookup并使用了迭代器API,一切似乎都可以正常工作。但是,岩石文件的代码在options.h中针对OptimizeForPointLookup api进行了记录。
//如果不需要保持数据排序,请使用此选项,即永远不会使用 //一个迭代器,仅调用Put()和Get()API
我缺少什么吗?有趣的是,迭代似乎也按照排序的顺序进行。
答案 0 :(得分:1)
OptimizeForPointLookup()API通过创建BLOOM FILTER
并将Index类型设置为kHashSearch
,从而使GET / PUT操作更快。顾名思义,kHashSearch
在键上创建哈希,并使点查找更快。
对于正常的迭代器操作,索引类型设置为kBinarySearch
。
默认情况下,RocksDB将数据按排序顺序插入到memtable中。优化点查找不会影响rocksDB的这种插入行为。