Commit f7c020d8 authored by zhangjinpeng1987's avatar zhangjinpeng1987 Committed by GitHub

support allow-concurrent-memtable-insert (#74)

parent 8336f84a
...@@ -240,6 +240,7 @@ extern "C" { ...@@ -240,6 +240,7 @@ extern "C" {
pub fn crocksdb_options_set_max_total_wal_size(options: *mut DBOptions, size: u64); pub fn crocksdb_options_set_max_total_wal_size(options: *mut DBOptions, size: u64);
pub fn crocksdb_options_set_use_fsync(options: *mut DBOptions, v: c_int); pub fn crocksdb_options_set_use_fsync(options: *mut DBOptions, v: c_int);
pub fn crocksdb_options_set_bytes_per_sync(options: *mut DBOptions, bytes: u64); pub fn crocksdb_options_set_bytes_per_sync(options: *mut DBOptions, bytes: u64);
pub fn crocksdb_options_set_allow_concurrent_memtable_write(options: *mut DBOptions, v: bool);
pub fn crocksdb_options_optimize_for_point_lookup(options: *mut DBOptions, pub fn crocksdb_options_optimize_for_point_lookup(options: *mut DBOptions,
block_cache_size_mb: u64); block_cache_size_mb: u64);
pub fn crocksdb_options_set_table_cache_numshardbits(options: *mut DBOptions, bits: c_int); pub fn crocksdb_options_set_table_cache_numshardbits(options: *mut DBOptions, bits: c_int);
......
...@@ -875,6 +875,12 @@ impl Options { ...@@ -875,6 +875,12 @@ impl Options {
pub fn get_block_cache_usage(&self) -> u64 { pub fn get_block_cache_usage(&self) -> u64 {
unsafe { crocksdb_ffi::crocksdb_options_get_block_cache_usage(self.inner) as u64 } unsafe { crocksdb_ffi::crocksdb_options_get_block_cache_usage(self.inner) as u64 }
} }
pub fn allow_concurrent_memtable_write(&self, v: bool) {
unsafe {
crocksdb_ffi::crocksdb_options_set_allow_concurrent_memtable_write(self.inner, v);
}
}
} }
pub struct FlushOptions { pub struct FlushOptions {
......
...@@ -330,3 +330,15 @@ fn test_set_compaction_pri() { ...@@ -330,3 +330,15 @@ fn test_set_compaction_pri() {
opts.compaction_priority(CompactionPriority::MinOverlappingRatio); opts.compaction_priority(CompactionPriority::MinOverlappingRatio);
DB::open(opts, path.path().to_str().unwrap()).unwrap(); DB::open(opts, path.path().to_str().unwrap()).unwrap();
} }
#[test]
fn test_allow_concurrent_memtable_write() {
let path = TempDir::new("_rust_rocksdb_allow_concurrent_memtable_write").expect("");
let mut opts = Options::new();
opts.create_if_missing(true);
opts.allow_concurrent_memtable_write(false);
let db = DB::open(opts, path.path().to_str().unwrap()).unwrap();
for i in 0..200 {
db.put(format!("k_{}", i).as_bytes(), b"v").unwrap();
}
}
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