Add --index_with_first_key and --index_shortening_mode to DB bench (#5859)
Summary: Some combinatino of --index_with_first_key and --index_shortening_mode can signifcantly improve performance for large values. Expose them in db_bench. Pull Request resolved: https://github.com/facebook/rocksdb/pull/5859 Test Plan: Run them with the new options and observe the behavior. Differential Revision: D20104434 fbshipit-source-id: 21d48a732a9caf20b82312c7d7557d747ea3c304
This commit is contained in:
parent
86f1ad7046
commit
9b3c9ef0e8
@ -457,6 +457,13 @@ DEFINE_bool(partition_index_and_filters, false,
|
||||
|
||||
DEFINE_bool(partition_index, false, "Partition index blocks");
|
||||
|
||||
DEFINE_bool(index_with_first_key, false, "Include first key in the index");
|
||||
|
||||
DEFINE_int64(
|
||||
index_shortening_mode, 2,
|
||||
"mode to shorten index: 0 for no shortening; 1 for only shortening "
|
||||
"separaters; 2 for shortening shortening and successor");
|
||||
|
||||
DEFINE_int64(metadata_block_size,
|
||||
ROCKSDB_NAMESPACE::BlockBasedTableOptions().metadata_block_size,
|
||||
"Max partition size when partitioning index/filters");
|
||||
@ -3745,6 +3752,11 @@ class Benchmark {
|
||||
block_based_options.index_type = BlockBasedTableOptions::kBinarySearch;
|
||||
}
|
||||
if (FLAGS_partition_index_and_filters || FLAGS_partition_index) {
|
||||
if (FLAGS_index_with_first_key) {
|
||||
fprintf(stderr,
|
||||
"--index_with_first_key is not compatible with"
|
||||
" partition index.");
|
||||
}
|
||||
if (FLAGS_use_hash_search) {
|
||||
fprintf(stderr,
|
||||
"use_hash_search is incompatible with "
|
||||
@ -3756,7 +3768,29 @@ class Benchmark {
|
||||
if (FLAGS_partition_index_and_filters) {
|
||||
block_based_options.partition_filters = true;
|
||||
}
|
||||
} else if (FLAGS_index_with_first_key) {
|
||||
block_based_options.index_type =
|
||||
BlockBasedTableOptions::kBinarySearchWithFirstKey;
|
||||
}
|
||||
BlockBasedTableOptions::IndexShorteningMode index_shortening =
|
||||
block_based_options.index_shortening;
|
||||
switch (FLAGS_index_shortening_mode) {
|
||||
case 0:
|
||||
index_shortening =
|
||||
BlockBasedTableOptions::IndexShorteningMode::kNoShortening;
|
||||
break;
|
||||
case 1:
|
||||
index_shortening =
|
||||
BlockBasedTableOptions::IndexShorteningMode::kShortenSeparators;
|
||||
break;
|
||||
case 2:
|
||||
index_shortening = BlockBasedTableOptions::IndexShorteningMode::
|
||||
kShortenSeparatorsAndSuccessor;
|
||||
break;
|
||||
default:
|
||||
fprintf(stderr, "Unknown key shortening mode\n");
|
||||
}
|
||||
block_based_options.index_shortening = index_shortening;
|
||||
if (cache_ == nullptr) {
|
||||
block_based_options.no_block_cache = true;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user