Hi,
I'm working on a project that uses rocksdb as its storage.
It writes 500kb of data to multiple column families about once every
second through a batch write. Currently the db has about 6 column
families and I'm interested in optimizing as much as I can the
point-lookup performance for one of the column families. (The database
is too large to fit everything in-memory).
The CF in question has a fixed key size and they are prefixed, also I never do any range scans and am only interested in point lookups (and the ocasional write as stated above).
This is what I've come up with so far:
table_options.pin_l0_filter_and_index_blocks_in_cache = true
table_options.cache_index_and_filter_blocks = true
table_options.filter_policy.reset(rocksdb::NewBloomFilterPolicy(15.5, true));
options.prefix_extractor.reset(NewFixedPrefixTransform(20));
table_options.index_type = rocksdb::BlockBasedTableOptions::kHashSearch;
options.memtable_whole_key_filtering = true;
options.memtable_prefix_bloom_size_ratio = 0.2
options.row_cache = NewLRUCache(20GB);
table_options.block_cache = NewLRUCache(20GB);
table_options.index_and_filter_blocks = true;
table_options.data_block_hash_ratio = 0.5
table_options.data_block_index_type = BinaryAndHash
options.use_direct_reads = true
options.compression = None;
I'm still actively experimenting with the settings. Anything else that I could try to make my reads as fast as possible?