diff --git a/cozorocks/bridge/db.cpp b/cozorocks/bridge/db.cpp index 07e14736..0183be88 100644 --- a/cozorocks/bridge/db.cpp +++ b/cozorocks/bridge/db.cpp @@ -7,9 +7,31 @@ #include "db.h" #include "cozorocks/src/bridge/mod.rs.h" +unique_ptr default_db_options() { + auto options = make_unique(); + options->compression = kLZ4Compression; + options->bottommost_compression = kZSTD; + options->level_compaction_dynamic_level_bytes = true; + options->max_background_compactions = 4; + options->max_background_flushes = 2; + options->bytes_per_sync = 1048576; + options->compaction_pri = kMinOverlappingRatio; + BlockBasedTableOptions table_options; + table_options.block_size = 16 * 1024; + table_options.cache_index_and_filter_blocks = true; + table_options.pin_l0_filter_and_index_blocks_in_cache = true; + table_options.format_version = 5; + + auto table_factory = NewBlockBasedTableFactory(table_options); + options->table_factory.reset(table_factory); + + return options; +} + shared_ptr open_raw_db(const DbOpts &opts, RocksDbStatus &status, bool use_cmp, RustComparatorFn cmp_impl, bool no_wal) { - auto options = make_unique(); + auto options = default_db_options(); + if (opts.prepare_for_bulk_load) { options->PrepareForBulkLoad(); } @@ -68,7 +90,8 @@ open_raw_db(const DbOpts &opts, RocksDbStatus &status, bool use_cmp, RustCompara } shared_ptr open_db(const DbOpts &opts, RocksDbStatus &status, bool use_cmp, RustComparatorFn cmp_impl) { - auto options = make_unique(); + auto options = default_db_options(); + if (opts.prepare_for_bulk_load) { options->PrepareForBulkLoad(); } diff --git a/cozorocks/build.rs b/cozorocks/build.rs index c010356d..10a811dc 100644 --- a/cozorocks/build.rs +++ b/cozorocks/build.rs @@ -1,6 +1,13 @@ use std::env::var; fn main() { + cxx_build::bridge("src/bridge/mod.rs") + .files(["bridge/status.cpp", "bridge/db.cpp", "bridge/tx.cpp"]) + .include("deps/include") + .include("bridge") + .flag_if_supported("-std=c++17") + .compile("cozorocks"); + let manifest_dir = var("CARGO_MANIFEST_DIR").unwrap(); println!("cargo:rustc-link-search={}/deps/lib/", manifest_dir); @@ -23,11 +30,4 @@ fn main() { println!("cargo:rerun-if-changed=bridge/iter.h"); println!("cargo:rerun-if-changed=bridge/tx.h"); println!("cargo:rerun-if-changed=bridge/tx.cpp"); - - cxx_build::bridge("src/bridge/mod.rs") - .files(["bridge/status.cpp", "bridge/db.cpp", "bridge/tx.cpp"]) - .include("deps/include") - .include("bridge") - .flag_if_supported("-std=c++17") - .compile("cozorocks"); } diff --git a/cozorocks/build_rocksdb.sh b/cozorocks/build_rocksdb.sh index 342578c0..e8428a85 100755 --- a/cozorocks/build_rocksdb.sh +++ b/cozorocks/build_rocksdb.sh @@ -8,6 +8,7 @@ if [[ "$OSTYPE" == "linux-gnu"* ]]; then fi mkdir -p deps +mkdir -p deps/lib INSTALL_DIR=$(readlink -f deps) echo "$INSTALL_DIR" @@ -31,12 +32,18 @@ export EXTRA_CXXFLAGS='-fPIC' # JEMALLOC_LIB=" $JEMALLOC_BASE/lib/libjemalloc.a" \ # JEMALLOC=1 \ +DEBUG_LEVEL=0 make libz.a libsnappy.a liblz4.a libzstd.a +mv ./*.a ../deps/lib || exit + +export EXTRA_CFLAGS="-fPIC -I${PWD}/lz4-1.9.3/lib" +export EXTRA_CXXFLAGS="-fPIC -I${PWD}/lz4-1.9.3/lib" + DEBUG_LEVEL=0 \ USE_RTTI=1 \ USE_CLANG=1 \ PREFIX=$INSTALL_DIR \ make install-static || exit -DEBUG_LEVEL=0 make libz.a libsnappy.a liblz4.a libzstd.a mv ./*.a ../deps/lib || exit + make clean