Commit 1742f182 authored by Huachao Huang's avatar Huachao Huang Committed by zhangjinpeng1987

Add `read_amp_bytes_per_bit` option (#136)

parent f3deb11b
......@@ -1563,6 +1563,11 @@ void crocksdb_block_based_options_set_pin_l0_filter_and_index_blocks_in_cache(
options->rep.pin_l0_filter_and_index_blocks_in_cache = v;
}
void crocksdb_block_based_options_set_read_amp_bytes_per_bit(
crocksdb_block_based_table_options_t* options, int v) {
options->rep.read_amp_bytes_per_bit = v;
}
void crocksdb_options_set_block_based_table_factory(
crocksdb_options_t *opt,
crocksdb_block_based_table_options_t* table_options) {
......
......@@ -594,6 +594,9 @@ crocksdb_block_based_options_set_cache_index_and_filter_blocks(
extern C_ROCKSDB_LIBRARY_API void
crocksdb_block_based_options_set_pin_l0_filter_and_index_blocks_in_cache(
crocksdb_block_based_table_options_t*, unsigned char);
extern C_ROCKSDB_LIBRARY_API void
crocksdb_block_based_options_set_read_amp_bytes_per_bit(
crocksdb_block_based_table_options_t*, int);
extern C_ROCKSDB_LIBRARY_API void crocksdb_options_set_block_based_table_factory(
crocksdb_options_t* opt, crocksdb_block_based_table_options_t* table_options);
......
......@@ -351,6 +351,10 @@ extern "C" {
block_options: *mut DBBlockBasedTableOptions,
v: c_uchar,
);
pub fn crocksdb_block_based_options_set_read_amp_bytes_per_bit(
block_options: *mut DBBlockBasedTableOptions,
v: c_int,
);
pub fn crocksdb_options_increase_parallelism(options: *mut Options, threads: c_int);
pub fn crocksdb_options_optimize_level_style_compaction(
options: *mut Options,
......
......@@ -119,6 +119,15 @@ impl BlockBasedOptions {
v as u8);
}
}
pub fn set_read_amp_bytes_per_bit(&mut self, v: u32) {
unsafe {
crocksdb_ffi::crocksdb_block_based_options_set_read_amp_bytes_per_bit(
self.inner,
v as c_int,
)
}
}
}
pub struct RateLimiter {
......
......@@ -562,3 +562,31 @@ fn test_read_options() {
}
assert!(key_count == 3);
}
#[test]
fn test_block_based_options() {
let path = TempDir::new("_rust_rocksdb_block_based_options").expect("");
let path_str = path.path().to_str().unwrap();
let mut opts = DBOptions::new();
opts.create_if_missing(true);
opts.enable_statistics();
opts.set_stats_dump_period_sec(60);
let mut bopts = BlockBasedOptions::new();
bopts.set_read_amp_bytes_per_bit(16);
let mut cfopts = ColumnFamilyOptions::new();
cfopts.set_block_based_table_factory(&bopts);
let db = DB::open_cf(opts.clone(), path_str, vec!["default"], vec![cfopts]).unwrap();
db.put(b"a", b"a").unwrap();
db.flush(true).unwrap();
db.get(b"a").unwrap();
assert_ne!(
opts.get_statistics_ticker_count(TickerType::ReadAmpTotalReadBytes),
0
);
assert_ne!(
opts.get_statistics_ticker_count(TickerType::ReadAmpEstimateUsefulBytes),
0
);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment