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( ...@@ -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; 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( void crocksdb_options_set_block_based_table_factory(
crocksdb_options_t *opt, crocksdb_options_t *opt,
crocksdb_block_based_table_options_t* table_options) { crocksdb_block_based_table_options_t* table_options) {
......
...@@ -594,6 +594,9 @@ crocksdb_block_based_options_set_cache_index_and_filter_blocks( ...@@ -594,6 +594,9 @@ crocksdb_block_based_options_set_cache_index_and_filter_blocks(
extern C_ROCKSDB_LIBRARY_API void extern C_ROCKSDB_LIBRARY_API void
crocksdb_block_based_options_set_pin_l0_filter_and_index_blocks_in_cache( crocksdb_block_based_options_set_pin_l0_filter_and_index_blocks_in_cache(
crocksdb_block_based_table_options_t*, unsigned char); 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( 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); crocksdb_options_t* opt, crocksdb_block_based_table_options_t* table_options);
......
...@@ -351,6 +351,10 @@ extern "C" { ...@@ -351,6 +351,10 @@ extern "C" {
block_options: *mut DBBlockBasedTableOptions, block_options: *mut DBBlockBasedTableOptions,
v: c_uchar, 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_increase_parallelism(options: *mut Options, threads: c_int);
pub fn crocksdb_options_optimize_level_style_compaction( pub fn crocksdb_options_optimize_level_style_compaction(
options: *mut Options, options: *mut Options,
......
...@@ -119,6 +119,15 @@ impl BlockBasedOptions { ...@@ -119,6 +119,15 @@ impl BlockBasedOptions {
v as u8); 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 { pub struct RateLimiter {
......
...@@ -562,3 +562,31 @@ fn test_read_options() { ...@@ -562,3 +562,31 @@ fn test_read_options() {
} }
assert!(key_count == 3); 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