Skip to content

Commit

Permalink
[release-3.0]: config support rocksdb doubly skiplist to optimize rev…
Browse files Browse the repository at this point in the history
…erse-scan (#5368)

* config support rocksdb doubly skiplist to optimize reverse-scan

Signed-off-by: Little-Wallace <bupt2013211450@gmail.com>
  • Loading branch information
Little-Wallace authored and zhouqiang-cl committed Sep 9, 2019
1 parent d6a306b commit a31fea7
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 5 deletions.
8 changes: 4 additions & 4 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 13 additions & 1 deletion src/config.rs
Expand Up @@ -160,6 +160,7 @@ macro_rules! cf_config {
pub hard_pending_compaction_bytes_limit: ReadableSize,
pub prop_size_index_distance: u64,
pub prop_keys_index_distance: u64,
pub enable_doubly_skiplist: bool,
pub titan: TitanCfConfig,
}

Expand Down Expand Up @@ -264,6 +265,10 @@ macro_rules! write_into_metrics {
$metrics
.with_label_values(&[$tag, "hard_pending_compaction_bytes_limit"])
.set($cf.hard_pending_compaction_bytes_limit.0 as f64);
$metrics
.with_label_values(&[$tag, "enable_doubly_skiplist"])
.set(($cf.enable_doubly_skiplist as i32).into());

$metrics
.with_label_values(&[$tag, "titan_min_blob_size"])
.set($cf.titan.min_blob_size.0 as f64);
Expand Down Expand Up @@ -334,7 +339,9 @@ macro_rules! build_cf_opt {
cf_opts.set_soft_pending_compaction_bytes_limit($opt.soft_pending_compaction_bytes_limit.0);
cf_opts.set_hard_pending_compaction_bytes_limit($opt.hard_pending_compaction_bytes_limit.0);
cf_opts.set_optimize_filters_for_hits($opt.optimize_filters_for_hits);

if $opt.enable_doubly_skiplist {
cf_opts.set_doubly_skiplist();
}
cf_opts
}};
}
Expand Down Expand Up @@ -383,6 +390,7 @@ impl Default for DefaultCfConfig {
hard_pending_compaction_bytes_limit: ReadableSize::gb(256),
prop_size_index_distance: DEFAULT_PROP_SIZE_INDEX_DISTANCE,
prop_keys_index_distance: DEFAULT_PROP_KEYS_INDEX_DISTANCE,
enable_doubly_skiplist: false,
titan: TitanCfConfig::default(),
}
}
Expand Down Expand Up @@ -448,6 +456,7 @@ impl Default for WriteCfConfig {
hard_pending_compaction_bytes_limit: ReadableSize::gb(256),
prop_size_index_distance: DEFAULT_PROP_SIZE_INDEX_DISTANCE,
prop_keys_index_distance: DEFAULT_PROP_KEYS_INDEX_DISTANCE,
enable_doubly_skiplist: false,
titan,
}
}
Expand Down Expand Up @@ -515,6 +524,7 @@ impl Default for LockCfConfig {
hard_pending_compaction_bytes_limit: ReadableSize::gb(256),
prop_size_index_distance: DEFAULT_PROP_SIZE_INDEX_DISTANCE,
prop_keys_index_distance: DEFAULT_PROP_KEYS_INDEX_DISTANCE,
enable_doubly_skiplist: false,
titan,
}
}
Expand Down Expand Up @@ -572,6 +582,7 @@ impl Default for RaftCfConfig {
hard_pending_compaction_bytes_limit: ReadableSize::gb(256),
prop_size_index_distance: DEFAULT_PROP_SIZE_INDEX_DISTANCE,
prop_keys_index_distance: DEFAULT_PROP_KEYS_INDEX_DISTANCE,
enable_doubly_skiplist: false,
titan,
}
}
Expand Down Expand Up @@ -839,6 +850,7 @@ impl Default for RaftDefaultCfConfig {
hard_pending_compaction_bytes_limit: ReadableSize::gb(256),
prop_size_index_distance: DEFAULT_PROP_SIZE_INDEX_DISTANCE,
prop_keys_index_distance: DEFAULT_PROP_KEYS_INDEX_DISTANCE,
enable_doubly_skiplist: false,
titan: TitanCfConfig::default(),
}
}
Expand Down
5 changes: 5 additions & 0 deletions tests/integrations/config/mod.rs
Expand Up @@ -239,6 +239,7 @@ fn test_serde_custom_tikv_config() {
},
prop_size_index_distance: 4000000,
prop_keys_index_distance: 40000,
enable_doubly_skiplist: true,
},
writecf: WriteCfConfig {
block_size: ReadableSize::kb(12),
Expand Down Expand Up @@ -291,6 +292,7 @@ fn test_serde_custom_tikv_config() {
},
prop_size_index_distance: 4000000,
prop_keys_index_distance: 40000,
enable_doubly_skiplist: false,
},
lockcf: LockCfConfig {
block_size: ReadableSize::kb(12),
Expand Down Expand Up @@ -343,6 +345,7 @@ fn test_serde_custom_tikv_config() {
},
prop_size_index_distance: 4000000,
prop_keys_index_distance: 40000,
enable_doubly_skiplist: false,
},
raftcf: RaftCfConfig {
block_size: ReadableSize::kb(12),
Expand Down Expand Up @@ -395,6 +398,7 @@ fn test_serde_custom_tikv_config() {
},
prop_size_index_distance: 4000000,
prop_keys_index_distance: 40000,
enable_doubly_skiplist: false,
},
titan: TitanDBConfig {
enabled: true,
Expand Down Expand Up @@ -469,6 +473,7 @@ fn test_serde_custom_tikv_config() {
titan: TitanCfConfig::default(),
prop_size_index_distance: 4000000,
prop_keys_index_distance: 40000,
enable_doubly_skiplist: false,
},
};
value.storage = StorageConfig {
Expand Down
1 change: 1 addition & 0 deletions tests/integrations/config/test-custom.toml
Expand Up @@ -216,6 +216,7 @@ soft-pending-compaction-bytes-limit = "12GB"
hard-pending-compaction-bytes-limit = "12GB"
prop-size-index-distance = 4000000
prop-keys-index-distance = 40000
enable-doubly-skiplist = true

[rocksdb.defaultcf.titan]
min-blob-size = "2018B"
Expand Down

0 comments on commit a31fea7

Please sign in to comment.