Fix OptimizeForPointLookup()
Summary: If users directly call OptimizeForPointLookup(), it is broken as the option isn't compatible with parallel memtable insert. Fix it by using memtable bloomo filter instead. Closes https://github.com/facebook/rocksdb/pull/1791 Differential Revision: D4442836 Pulled By: siying fbshipit-source-id: bf6c9cd
This commit is contained in:
parent
e840213d6e
commit
0e8dfd6062
@ -2216,6 +2216,18 @@ TEST_F(DBTest2, ManualCompactionOverlapManualCompaction) {
|
|||||||
|
|
||||||
rocksdb::SyncPoint::GetInstance()->DisableProcessing();
|
rocksdb::SyncPoint::GetInstance()->DisableProcessing();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_F(DBTest2, OptimizeForPointLookup) {
|
||||||
|
Options options = CurrentOptions();
|
||||||
|
Close();
|
||||||
|
options.OptimizeForPointLookup(2);
|
||||||
|
ASSERT_OK(DB::Open(options, dbname_, &db_));
|
||||||
|
|
||||||
|
ASSERT_OK(Put("foo", "v1"));
|
||||||
|
ASSERT_EQ("v1", Get("foo"));
|
||||||
|
Flush();
|
||||||
|
ASSERT_EQ("v1", Get("foo"));
|
||||||
|
}
|
||||||
#endif // ROCKSDB_LITE
|
#endif // ROCKSDB_LITE
|
||||||
|
|
||||||
} // namespace rocksdb
|
} // namespace rocksdb
|
||||||
|
@ -700,7 +700,7 @@ ColumnFamilyOptions* ColumnFamilyOptions::OptimizeForPointLookup(
|
|||||||
block_based_options.block_cache =
|
block_based_options.block_cache =
|
||||||
NewLRUCache(static_cast<size_t>(block_cache_size_mb * 1024 * 1024));
|
NewLRUCache(static_cast<size_t>(block_cache_size_mb * 1024 * 1024));
|
||||||
table_factory.reset(new BlockBasedTableFactory(block_based_options));
|
table_factory.reset(new BlockBasedTableFactory(block_based_options));
|
||||||
memtable_factory.reset(NewHashLinkListRepFactory());
|
memtable_prefix_bloom_size_ratio = 0.02;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user