@nxtedition/rocksdb 7.0.0-alpha.5 → 7.0.0-alpha.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/binding.cc +32 -31
- package/deps/rocksdb/rocksdb/CMakeLists.txt +10 -3
- package/deps/rocksdb/rocksdb/Makefile +8 -1
- package/deps/rocksdb/rocksdb/TARGETS +14 -0
- package/deps/rocksdb/rocksdb/cache/cache.cc +50 -2
- package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +9 -3
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +111 -33
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +71 -31
- package/deps/rocksdb/rocksdb/cache/fast_lru_cache.cc +31 -30
- package/deps/rocksdb/rocksdb/cache/fast_lru_cache.h +21 -8
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +35 -38
- package/deps/rocksdb/rocksdb/cache/lru_cache.h +22 -9
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +48 -0
- package/deps/rocksdb/rocksdb/db/blob/db_blob_compaction_test.cc +78 -0
- package/deps/rocksdb/rocksdb/db/builder.cc +7 -5
- package/deps/rocksdb/rocksdb/db/c.cc +777 -108
- package/deps/rocksdb/rocksdb/db/c_test.c +290 -30
- package/deps/rocksdb/rocksdb/db/column_family.cc +13 -0
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +24 -36
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +18 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +24 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +6 -9
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +38 -40
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +14 -17
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +3 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +253 -24
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +9 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +3 -2
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +67 -10
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +83 -7
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +5 -2
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +68 -0
- package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +40 -1
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +94 -23
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +17 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +263 -58
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +186 -23
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +43 -14
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +24 -28
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +116 -83
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +13 -5
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +71 -34
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +8 -3
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +72 -33
- package/deps/rocksdb/rocksdb/db/db_readonly_with_timestamp_test.cc +629 -0
- package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +438 -10
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +43 -2
- package/deps/rocksdb/rocksdb/db/db_test.cc +41 -1
- package/deps/rocksdb/rocksdb/db/db_test2.cc +41 -12
- package/deps/rocksdb/rocksdb/db/db_test_util.h +1 -0
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +90 -0
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +109 -16
- package/deps/rocksdb/rocksdb/db/dbformat.h +1 -1
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +54 -0
- package/deps/rocksdb/rocksdb/db/flush_job.cc +3 -3
- package/deps/rocksdb/rocksdb/db/log_reader.cc +22 -4
- package/deps/rocksdb/rocksdb/db/log_reader.h +4 -0
- package/deps/rocksdb/rocksdb/db/memtable.cc +4 -0
- package/deps/rocksdb/rocksdb/db/post_memtable_callback.h +25 -0
- package/deps/rocksdb/rocksdb/db/repair.cc +1 -1
- package/deps/rocksdb/rocksdb/db/repair_test.cc +3 -2
- package/deps/rocksdb/rocksdb/db/snapshot_impl.h +65 -2
- package/deps/rocksdb/rocksdb/db/transaction_log_impl.cc +3 -2
- package/deps/rocksdb/rocksdb/db/version_set.cc +52 -0
- package/deps/rocksdb/rocksdb/db/version_set.h +57 -43
- package/deps/rocksdb/rocksdb/db/wal_manager.cc +14 -4
- package/deps/rocksdb/rocksdb/db/wal_manager.h +16 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +141 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.h +55 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization_test.cc +292 -0
- package/deps/rocksdb/rocksdb/db/write_thread.h +6 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +2 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +42 -19
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +28 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +6 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +11 -5
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +18 -12
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +74 -167
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +4 -9
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +16 -9
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +117 -10
- package/deps/rocksdb/rocksdb/env/composite_env.cc +7 -0
- package/deps/rocksdb/rocksdb/env/env.cc +4 -0
- package/deps/rocksdb/rocksdb/env/env_posix.cc +3 -3
- package/deps/rocksdb/rocksdb/env/env_test.cc +5 -5
- package/deps/rocksdb/rocksdb/env/file_system_tracer.cc +45 -0
- package/deps/rocksdb/rocksdb/env/file_system_tracer.h +14 -0
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +1 -1
- package/deps/rocksdb/rocksdb/env/io_posix.cc +50 -24
- package/deps/rocksdb/rocksdb/env/io_posix.h +9 -7
- package/deps/rocksdb/rocksdb/env/mock_env.cc +9 -3
- package/deps/rocksdb/rocksdb/file/file_util.cc +4 -1
- package/deps/rocksdb/rocksdb/file/filename.cc +14 -0
- package/deps/rocksdb/rocksdb/file/line_file_reader.cc +9 -4
- package/deps/rocksdb/rocksdb/file/line_file_reader.h +3 -2
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +157 -0
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +8 -1
- package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +68 -32
- package/deps/rocksdb/rocksdb/file/sequence_file_reader.h +20 -6
- package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +10 -6
- package/deps/rocksdb/rocksdb/file/writable_file_writer.h +4 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +16 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +231 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +4 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +13 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/io_status.h +4 -20
- package/deps/rocksdb/rocksdb/include/rocksdb/metadata.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +31 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/snapshot.h +2 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/status.h +4 -20
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/trace_record.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +34 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +36 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/wide_columns.h +74 -0
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger.cc +36 -3
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +16 -3
- package/deps/rocksdb/rocksdb/logging/env_logger.h +3 -3
- package/deps/rocksdb/rocksdb/logging/log_buffer.cc +2 -2
- package/deps/rocksdb/rocksdb/logging/log_buffer.h +1 -1
- package/deps/rocksdb/rocksdb/logging/posix_logger.h +3 -3
- package/deps/rocksdb/rocksdb/memory/arena.cc +0 -1
- package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +61 -73
- package/deps/rocksdb/rocksdb/monitoring/histogram.cc +6 -5
- package/deps/rocksdb/rocksdb/monitoring/histogram_test.cc +6 -0
- package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +7 -3
- package/deps/rocksdb/rocksdb/options/cf_options.cc +6 -0
- package/deps/rocksdb/rocksdb/options/cf_options.h +3 -0
- package/deps/rocksdb/rocksdb/options/options.cc +4 -1
- package/deps/rocksdb/rocksdb/options/options_helper.cc +1 -0
- package/deps/rocksdb/rocksdb/options/options_parser.cc +1 -1
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +1 -0
- package/deps/rocksdb/rocksdb/options/options_test.cc +4 -0
- package/deps/rocksdb/rocksdb/port/port_posix.h +0 -2
- package/deps/rocksdb/rocksdb/port/sys_time.h +27 -11
- package/deps/rocksdb/rocksdb/port/win/env_win.cc +1 -1
- package/deps/rocksdb/rocksdb/port/win/io_win.cc +16 -0
- package/deps/rocksdb/rocksdb/port/win/io_win.h +11 -2
- package/deps/rocksdb/rocksdb/port/win/port_win.cc +1 -1
- package/deps/rocksdb/rocksdb/port/win/port_win.h +2 -16
- package/deps/rocksdb/rocksdb/port/win/win_jemalloc.cc +2 -2
- package/deps/rocksdb/rocksdb/port/win/win_logger.cc +2 -2
- package/deps/rocksdb/rocksdb/rocksdb.pc.in +4 -5
- package/deps/rocksdb/rocksdb/src.mk +3 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.cc +7 -5
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +39 -43
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +2 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +42 -34
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +1 -7
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +2 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_like_traits.h +2 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_prefix_index.cc +7 -13
- package/deps/rocksdb/rocksdb/table/block_based/block_prefix_index.h +9 -5
- package/deps/rocksdb/rocksdb/table/block_based/block_type.h +5 -2
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +4 -4
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.h +6 -2
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +8 -5
- package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +2 -2
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +19 -14
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +2 -0
- package/deps/rocksdb/rocksdb/table/format.h +1 -3
- package/deps/rocksdb/rocksdb/table/get_context.cc +5 -0
- package/deps/rocksdb/rocksdb/table/multiget_context.h +3 -0
- package/deps/rocksdb/rocksdb/table/scoped_arena_iterator.h +3 -4
- package/deps/rocksdb/rocksdb/table/table_test.cc +1 -1
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +102 -6
- package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +19 -2
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +2 -1
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +2 -1
- package/deps/rocksdb/rocksdb/util/aligned_buffer.h +2 -4
- package/deps/rocksdb/rocksdb/util/autovector.h +11 -1
- package/deps/rocksdb/rocksdb/util/cleanable.cc +1 -0
- package/deps/rocksdb/rocksdb/util/compression.h +5 -7
- package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +14 -8
- package/deps/rocksdb/rocksdb/util/string_util.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +33 -63
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +3 -2
- package/deps/rocksdb/rocksdb/utilities/counted_fs.cc +14 -0
- package/deps/rocksdb/rocksdb/utilities/counted_fs.h +7 -1
- package/deps/rocksdb/rocksdb/utilities/fault_injection_env.cc +7 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +1 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +8 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +3 -0
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_bench.cc +6 -4
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.h +2 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +34 -21
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +31 -7
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +1 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +63 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.h +40 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/timestamped_snapshot_test.cc +426 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +37 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +6 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +16 -18
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +18 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +61 -0
- package/deps/rocksdb/rocksdb.gyp +1 -0
- package/index.js +4 -4
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
package/binding.cc
CHANGED
|
@@ -691,85 +691,85 @@ struct OpenWorker final : public Worker {
|
|
|
691
691
|
std::vector<rocksdb::ColumnFamilyDescriptor> column_families_;
|
|
692
692
|
};
|
|
693
693
|
|
|
694
|
-
napi_status InitOptions(napi_env env, auto&
|
|
695
|
-
const auto memtable_memory_budget = Uint32Property(env,
|
|
694
|
+
napi_status InitOptions(napi_env env, auto& columnOptions, auto options) {
|
|
695
|
+
const auto memtable_memory_budget = Uint32Property(env, options, "memtableMemoryBudget").value_or(256 * 1024 * 1024);
|
|
696
696
|
|
|
697
|
-
const auto compaction = StringProperty(env,
|
|
697
|
+
const auto compaction = StringProperty(env, options, "compaction").value_or("level");
|
|
698
698
|
|
|
699
699
|
if (compaction == "universal") {
|
|
700
|
-
|
|
700
|
+
columnOptions.write_buffer_size = static_cast<size_t>(memtable_memory_budget / 4);
|
|
701
701
|
// merge two memtables when flushing to L0
|
|
702
|
-
|
|
702
|
+
columnOptions.min_write_buffer_number_to_merge = 2;
|
|
703
703
|
// this means we'll use 50% extra memory in the worst case, but will reduce
|
|
704
704
|
// write stalls.
|
|
705
|
-
|
|
705
|
+
columnOptions.max_write_buffer_number = 6;
|
|
706
706
|
// universal style compaction
|
|
707
|
-
|
|
708
|
-
|
|
707
|
+
columnOptions.compaction_style = rocksdb::kCompactionStyleUniversal;
|
|
708
|
+
columnOptions.compaction_options_universal.compression_size_percent = 80;
|
|
709
709
|
} else {
|
|
710
710
|
// merge two memtables when flushing to L0
|
|
711
|
-
|
|
711
|
+
columnOptions.min_write_buffer_number_to_merge = 2;
|
|
712
712
|
// this means we'll use 50% extra memory in the worst case, but will reduce
|
|
713
713
|
// write stalls.
|
|
714
|
-
|
|
714
|
+
columnOptions.max_write_buffer_number = 6;
|
|
715
715
|
// start flushing L0->L1 as soon as possible. each file on level0 is
|
|
716
716
|
// (memtable_memory_budget / 2). This will flush level 0 when it's bigger than
|
|
717
717
|
// memtable_memory_budget.
|
|
718
|
-
|
|
718
|
+
columnOptions.level0_file_num_compaction_trigger = 2;
|
|
719
719
|
// doesn't really matter much, but we don't want to create too many files
|
|
720
|
-
|
|
720
|
+
columnOptions.target_file_size_base = memtable_memory_budget / 8;
|
|
721
721
|
// make Level1 size equal to Level0 size, so that L0->L1 compactions are fast
|
|
722
|
-
|
|
722
|
+
columnOptions.max_bytes_for_level_base = memtable_memory_budget;
|
|
723
723
|
|
|
724
724
|
// level style compaction
|
|
725
|
-
|
|
725
|
+
columnOptions.compaction_style = rocksdb::kCompactionStyleLevel;
|
|
726
726
|
|
|
727
727
|
// TODO (perf): only compress levels >= 2
|
|
728
728
|
}
|
|
729
729
|
|
|
730
|
-
|
|
731
|
-
BooleanProperty(env,
|
|
732
|
-
if (
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
//
|
|
730
|
+
columnOptions.compression =
|
|
731
|
+
BooleanProperty(env, options, "compression").value_or((true)) ? rocksdb::kZSTD : rocksdb::kNoCompression;
|
|
732
|
+
if (columnOptions.compression == rocksdb::kZSTD) {
|
|
733
|
+
columnOptions.compression_opts.max_dict_bytes = 16 * 1024;
|
|
734
|
+
columnOptions.compression_opts.zstd_max_train_bytes = 16 * 1024 * 100;
|
|
735
|
+
// columnOptions.compression_opts.parallel_threads
|
|
736
736
|
}
|
|
737
737
|
|
|
738
|
-
const auto cacheSize = Uint32Property(env,
|
|
738
|
+
const auto cacheSize = Uint32Property(env, options, "cacheSize").value_or(8 << 20);
|
|
739
739
|
|
|
740
740
|
rocksdb::BlockBasedTableOptions tableOptions;
|
|
741
741
|
|
|
742
742
|
if (cacheSize) {
|
|
743
743
|
tableOptions.block_cache = rocksdb::NewLRUCache(cacheSize);
|
|
744
744
|
tableOptions.cache_index_and_filter_blocks =
|
|
745
|
-
BooleanProperty(env,
|
|
745
|
+
BooleanProperty(env, options, "cacheIndexAndFilterBlocks").value_or(true);
|
|
746
746
|
} else {
|
|
747
747
|
tableOptions.no_block_cache = true;
|
|
748
748
|
tableOptions.cache_index_and_filter_blocks = false;
|
|
749
749
|
}
|
|
750
750
|
|
|
751
|
-
const auto optimize = StringProperty(env,
|
|
751
|
+
const auto optimize = StringProperty(env, options, "optimize").value_or("");
|
|
752
752
|
|
|
753
753
|
if (optimize == "point-lookup") {
|
|
754
754
|
tableOptions.data_block_index_type = rocksdb::BlockBasedTableOptions::kDataBlockBinaryAndHash;
|
|
755
755
|
tableOptions.data_block_hash_table_util_ratio = 0.75;
|
|
756
756
|
tableOptions.filter_policy.reset(rocksdb::NewRibbonFilterPolicy(10, 1));
|
|
757
757
|
|
|
758
|
-
|
|
759
|
-
|
|
758
|
+
columnOptions.memtable_prefix_bloom_size_ratio = 0.02;
|
|
759
|
+
columnOptions.memtable_whole_key_filtering = true;
|
|
760
760
|
} else if (optimize == "range-lookup") {
|
|
761
761
|
// TODO?
|
|
762
762
|
} else {
|
|
763
763
|
tableOptions.filter_policy.reset(rocksdb::NewRibbonFilterPolicy(10));
|
|
764
764
|
}
|
|
765
765
|
|
|
766
|
-
tableOptions.block_size = Uint32Property(env,
|
|
767
|
-
tableOptions.block_restart_interval = Uint32Property(env,
|
|
766
|
+
tableOptions.block_size = Uint32Property(env, options, "blockSize").value_or(4096);
|
|
767
|
+
tableOptions.block_restart_interval = Uint32Property(env, options, "blockRestartInterval").value_or(16);
|
|
768
768
|
tableOptions.format_version = 5;
|
|
769
769
|
tableOptions.checksum = rocksdb::kXXH3;
|
|
770
|
-
tableOptions.optimize_filters_for_memory = BooleanProperty(env,
|
|
770
|
+
tableOptions.optimize_filters_for_memory = BooleanProperty(env, options, "optimizeFiltersForMemory").value_or(true);
|
|
771
771
|
|
|
772
|
-
|
|
772
|
+
columnOptions.table_factory.reset(rocksdb::NewBlockBasedTableFactory(tableOptions));
|
|
773
773
|
|
|
774
774
|
return napi_ok;
|
|
775
775
|
}
|
|
@@ -791,7 +791,7 @@ NAPI_METHOD(db_open) {
|
|
|
791
791
|
|
|
792
792
|
dbOptions.create_if_missing = BooleanProperty(env, options, "createIfMissing").value_or(true);
|
|
793
793
|
dbOptions.error_if_exists = BooleanProperty(env, options, "errorIfExists").value_or(false);
|
|
794
|
-
dbOptions.avoid_unnecessary_blocking_io = true;
|
|
794
|
+
dbOptions.avoid_unnecessary_blocking_io = BooleanProperty(env, options, "avoidUnnecessaryBlockingIO").value_or(true);
|
|
795
795
|
dbOptions.use_adaptive_mutex = BooleanProperty(env, options, "useAdaptiveMutex").value_or(true);
|
|
796
796
|
dbOptions.enable_pipelined_write = BooleanProperty(env, options, "enablePipelinedWrite").value_or(true);
|
|
797
797
|
dbOptions.max_background_jobs =
|
|
@@ -799,6 +799,7 @@ NAPI_METHOD(db_open) {
|
|
|
799
799
|
dbOptions.WAL_ttl_seconds = Uint32Property(env, options, "walTTL").value_or(0) / 1e3;
|
|
800
800
|
dbOptions.WAL_size_limit_MB = Uint32Property(env, options, "walSizeLimit").value_or(0) / 1e6;
|
|
801
801
|
dbOptions.create_missing_column_families = true;
|
|
802
|
+
dbOptions.unordered_write = BooleanProperty(env, options, "unorderedWrite").value_or(false);
|
|
802
803
|
|
|
803
804
|
const auto infoLogLevel = StringProperty(env, options, "infoLogLevel").value_or("");
|
|
804
805
|
if (infoLogLevel.size() > 0) {
|
|
@@ -1479,7 +1480,7 @@ struct NextWorker final : public Worker {
|
|
|
1479
1480
|
cache_.push_back(v.ToString());
|
|
1480
1481
|
}
|
|
1481
1482
|
|
|
1482
|
-
if (bytesRead > iterator_->highWaterMarkBytes_ || cache_.size() / 2 >= size_) {
|
|
1483
|
+
if ((iterator_->highWaterMarkBytes_ != -1 && bytesRead > iterator_->highWaterMarkBytes_) || cache_.size() / 2 >= size_) {
|
|
1483
1484
|
finished_ = false;
|
|
1484
1485
|
return rocksdb::Status::OK();
|
|
1485
1486
|
}
|
|
@@ -89,7 +89,11 @@ include(CMakeDependentOption)
|
|
|
89
89
|
if(MSVC)
|
|
90
90
|
option(WITH_GFLAGS "build with GFlags" OFF)
|
|
91
91
|
option(WITH_XPRESS "build with windows built in compression" OFF)
|
|
92
|
-
|
|
92
|
+
option(ROCKSDB_SKIP_THIRDPARTY "skip thirdparty.inc" OFF)
|
|
93
|
+
|
|
94
|
+
if(NOT ROCKSDB_SKIP_THIRDPARTY)
|
|
95
|
+
include(${CMAKE_CURRENT_SOURCE_DIR}/thirdparty.inc)
|
|
96
|
+
endif()
|
|
93
97
|
else()
|
|
94
98
|
if(CMAKE_SYSTEM_NAME MATCHES "FreeBSD" AND NOT CMAKE_SYSTEM_NAME MATCHES "kFreeBSD")
|
|
95
99
|
# FreeBSD has jemalloc as default malloc
|
|
@@ -671,6 +675,7 @@ set(SOURCES
|
|
|
671
675
|
db/version_set.cc
|
|
672
676
|
db/wal_edit.cc
|
|
673
677
|
db/wal_manager.cc
|
|
678
|
+
db/wide/wide_column_serialization.cc
|
|
674
679
|
db/write_batch.cc
|
|
675
680
|
db/write_batch_base.cc
|
|
676
681
|
db/write_controller.cc
|
|
@@ -1122,8 +1127,8 @@ if(NOT WIN32 OR ROCKSDB_INSTALL_ON_WINDOWS)
|
|
|
1122
1127
|
)
|
|
1123
1128
|
|
|
1124
1129
|
configure_file(
|
|
1125
|
-
${
|
|
1126
|
-
${
|
|
1130
|
+
${PROJECT_NAME}.pc.in
|
|
1131
|
+
${PROJECT_NAME}.pc
|
|
1127
1132
|
@ONLY
|
|
1128
1133
|
)
|
|
1129
1134
|
|
|
@@ -1290,6 +1295,7 @@ if(WITH_TESTS)
|
|
|
1290
1295
|
db/version_set_test.cc
|
|
1291
1296
|
db/wal_manager_test.cc
|
|
1292
1297
|
db/wal_edit_test.cc
|
|
1298
|
+
db/wide/wide_column_serialization_test.cc
|
|
1293
1299
|
db/write_batch_test.cc
|
|
1294
1300
|
db/write_callback_test.cc
|
|
1295
1301
|
db/write_controller_test.cc
|
|
@@ -1384,6 +1390,7 @@ if(WITH_TESTS)
|
|
|
1384
1390
|
utilities/transactions/write_prepared_transaction_test.cc
|
|
1385
1391
|
utilities/transactions/write_unprepared_transaction_test.cc
|
|
1386
1392
|
utilities/transactions/lock/range/range_locking_test.cc
|
|
1393
|
+
utilities/transactions/timestamped_snapshot_test.cc
|
|
1387
1394
|
utilities/ttl/ttl_test.cc
|
|
1388
1395
|
utilities/util_merge_operators_test.cc
|
|
1389
1396
|
utilities/write_batch_with_index/write_batch_with_index_test.cc
|
|
@@ -1777,6 +1777,9 @@ write_prepared_transaction_test: $(OBJ_DIR)/utilities/transactions/write_prepare
|
|
|
1777
1777
|
write_unprepared_transaction_test: $(OBJ_DIR)/utilities/transactions/write_unprepared_transaction_test.o $(TEST_LIBRARY) $(LIBRARY)
|
|
1778
1778
|
$(AM_LINK)
|
|
1779
1779
|
|
|
1780
|
+
timestamped_snapshot_test: $(OBJ_DIR)/utilities/transactions/timestamped_snapshot_test.o $(TEST_LIBRARY) $(LIBRARY)
|
|
1781
|
+
$(AM_LINK)
|
|
1782
|
+
|
|
1780
1783
|
sst_dump: $(OBJ_DIR)/tools/sst_dump.o $(TOOLS_LIBRARY) $(LIBRARY)
|
|
1781
1784
|
$(AM_LINK)
|
|
1782
1785
|
|
|
@@ -1876,7 +1879,7 @@ testutil_test: $(OBJ_DIR)/test_util/testutil_test.o $(TEST_LIBRARY) $(LIBRARY)
|
|
|
1876
1879
|
io_tracer_test: $(OBJ_DIR)/trace_replay/io_tracer_test.o $(OBJ_DIR)/trace_replay/io_tracer.o $(TEST_LIBRARY) $(LIBRARY)
|
|
1877
1880
|
$(AM_LINK)
|
|
1878
1881
|
|
|
1879
|
-
prefetch_test: $(OBJ_DIR)/file/prefetch_test.o $(TEST_LIBRARY) $(LIBRARY)
|
|
1882
|
+
prefetch_test: $(OBJ_DIR)/file/prefetch_test.o $(OBJ_DIR)/tools/io_tracer_parser_tool.o $(TEST_LIBRARY) $(LIBRARY)
|
|
1880
1883
|
$(AM_LINK)
|
|
1881
1884
|
|
|
1882
1885
|
io_tracer_parser_test: $(OBJ_DIR)/tools/io_tracer_parser_test.o $(OBJ_DIR)/tools/io_tracer_parser_tool.o $(TEST_LIBRARY) $(LIBRARY)
|
|
@@ -1902,6 +1905,10 @@ db_basic_bench: $(OBJ_DIR)/microbench/db_basic_bench.o $(LIBRARY)
|
|
|
1902
1905
|
|
|
1903
1906
|
cache_reservation_manager_test: $(OBJ_DIR)/cache/cache_reservation_manager_test.o $(TEST_LIBRARY) $(LIBRARY)
|
|
1904
1907
|
$(AM_LINK)
|
|
1908
|
+
|
|
1909
|
+
wide_column_serialization_test: $(OBJ_DIR)/db/wide/wide_column_serialization_test.o $(TEST_LIBRARY) $(LIBRARY)
|
|
1910
|
+
$(AM_LINK)
|
|
1911
|
+
|
|
1905
1912
|
#-------------------------------------------------
|
|
1906
1913
|
# make install related stuff
|
|
1907
1914
|
PREFIX ?= /usr/local
|
|
@@ -91,6 +91,7 @@ cpp_library_wrapper(name="rocksdb_lib", srcs=[
|
|
|
91
91
|
"db/version_set.cc",
|
|
92
92
|
"db/wal_edit.cc",
|
|
93
93
|
"db/wal_manager.cc",
|
|
94
|
+
"db/wide/wide_column_serialization.cc",
|
|
94
95
|
"db/write_batch.cc",
|
|
95
96
|
"db/write_batch_base.cc",
|
|
96
97
|
"db/write_controller.cc",
|
|
@@ -419,6 +420,7 @@ cpp_library_wrapper(name="rocksdb_whole_archive_lib", srcs=[
|
|
|
419
420
|
"db/version_set.cc",
|
|
420
421
|
"db/wal_edit.cc",
|
|
421
422
|
"db/wal_manager.cc",
|
|
423
|
+
"db/wide/wide_column_serialization.cc",
|
|
422
424
|
"db/write_batch.cc",
|
|
423
425
|
"db/write_batch_base.cc",
|
|
424
426
|
"db/write_controller.cc",
|
|
@@ -5766,6 +5768,12 @@ cpp_unittest_wrapper(name="timer_test",
|
|
|
5766
5768
|
extra_compiler_flags=[])
|
|
5767
5769
|
|
|
5768
5770
|
|
|
5771
|
+
cpp_unittest_wrapper(name="timestamped_snapshot_test",
|
|
5772
|
+
srcs=["utilities/transactions/timestamped_snapshot_test.cc"],
|
|
5773
|
+
deps=[":rocksdb_test_lib"],
|
|
5774
|
+
extra_compiler_flags=[])
|
|
5775
|
+
|
|
5776
|
+
|
|
5769
5777
|
cpp_unittest_wrapper(name="trace_analyzer_test",
|
|
5770
5778
|
srcs=["tools/trace_analyzer_test.cc"],
|
|
5771
5779
|
deps=[":rocksdb_test_lib"],
|
|
@@ -5814,6 +5822,12 @@ cpp_unittest_wrapper(name="wal_manager_test",
|
|
|
5814
5822
|
extra_compiler_flags=[])
|
|
5815
5823
|
|
|
5816
5824
|
|
|
5825
|
+
cpp_unittest_wrapper(name="wide_column_serialization_test",
|
|
5826
|
+
srcs=["db/wide/wide_column_serialization_test.cc"],
|
|
5827
|
+
deps=[":rocksdb_test_lib"],
|
|
5828
|
+
extra_compiler_flags=[])
|
|
5829
|
+
|
|
5830
|
+
|
|
5817
5831
|
cpp_unittest_wrapper(name="work_queue_test",
|
|
5818
5832
|
srcs=["util/work_queue_test.cc"],
|
|
5819
5833
|
deps=[":rocksdb_test_lib"],
|
|
@@ -34,13 +34,61 @@ static std::unordered_map<std::string, OptionTypeInfo>
|
|
|
34
34
|
OptionType::kDouble, OptionVerificationType::kNormal,
|
|
35
35
|
OptionTypeFlags::kMutable}},
|
|
36
36
|
};
|
|
37
|
+
|
|
38
|
+
static std::unordered_map<std::string, OptionTypeInfo>
|
|
39
|
+
comp_sec_cache_options_type_info = {
|
|
40
|
+
{"capacity",
|
|
41
|
+
{offsetof(struct CompressedSecondaryCacheOptions, capacity),
|
|
42
|
+
OptionType::kSizeT, OptionVerificationType::kNormal,
|
|
43
|
+
OptionTypeFlags::kMutable}},
|
|
44
|
+
{"num_shard_bits",
|
|
45
|
+
{offsetof(struct CompressedSecondaryCacheOptions, num_shard_bits),
|
|
46
|
+
OptionType::kInt, OptionVerificationType::kNormal,
|
|
47
|
+
OptionTypeFlags::kMutable}},
|
|
48
|
+
{"compression_type",
|
|
49
|
+
{offsetof(struct CompressedSecondaryCacheOptions, compression_type),
|
|
50
|
+
OptionType::kCompressionType, OptionVerificationType::kNormal,
|
|
51
|
+
OptionTypeFlags::kMutable}},
|
|
52
|
+
{"compress_format_version",
|
|
53
|
+
{offsetof(struct CompressedSecondaryCacheOptions,
|
|
54
|
+
compress_format_version),
|
|
55
|
+
OptionType::kUInt32T, OptionVerificationType::kNormal,
|
|
56
|
+
OptionTypeFlags::kMutable}},
|
|
57
|
+
};
|
|
37
58
|
#endif // ROCKSDB_LITE
|
|
38
59
|
|
|
39
60
|
Status SecondaryCache::CreateFromString(
|
|
40
61
|
const ConfigOptions& config_options, const std::string& value,
|
|
41
62
|
std::shared_ptr<SecondaryCache>* result) {
|
|
42
|
-
|
|
43
|
-
|
|
63
|
+
if (value.find("compressed_secondary_cache://") == 0) {
|
|
64
|
+
std::string args = value;
|
|
65
|
+
args.erase(0, std::strlen("compressed_secondary_cache://"));
|
|
66
|
+
Status status;
|
|
67
|
+
std::shared_ptr<SecondaryCache> sec_cache;
|
|
68
|
+
|
|
69
|
+
#ifndef ROCKSDB_LITE
|
|
70
|
+
CompressedSecondaryCacheOptions sec_cache_opts;
|
|
71
|
+
status = OptionTypeInfo::ParseStruct(config_options, "",
|
|
72
|
+
&comp_sec_cache_options_type_info, "",
|
|
73
|
+
args, &sec_cache_opts);
|
|
74
|
+
if (status.ok()) {
|
|
75
|
+
sec_cache = NewCompressedSecondaryCache(sec_cache_opts);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
#else
|
|
79
|
+
(void)config_options;
|
|
80
|
+
status = Status::NotSupported(
|
|
81
|
+
"Cannot load compressed secondary cache in LITE mode ", args);
|
|
82
|
+
#endif //! ROCKSDB_LITE
|
|
83
|
+
|
|
84
|
+
if (status.ok()) {
|
|
85
|
+
result->swap(sec_cache);
|
|
86
|
+
}
|
|
87
|
+
return status;
|
|
88
|
+
} else {
|
|
89
|
+
return LoadSharedObject<SecondaryCache>(config_options, value, nullptr,
|
|
90
|
+
result);
|
|
91
|
+
}
|
|
44
92
|
}
|
|
45
93
|
|
|
46
94
|
Status Cache::CreateFromString(const ConfigOptions& config_options,
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
#include <set>
|
|
13
13
|
#include <sstream>
|
|
14
14
|
|
|
15
|
+
#include "cache/fast_lru_cache.h"
|
|
15
16
|
#include "db/db_impl/db_impl.h"
|
|
16
17
|
#include "monitoring/histogram.h"
|
|
17
18
|
#include "port/port.h"
|
|
@@ -76,7 +77,7 @@ DEFINE_string(secondary_cache_uri, "",
|
|
|
76
77
|
static class std::shared_ptr<ROCKSDB_NAMESPACE::SecondaryCache> secondary_cache;
|
|
77
78
|
#endif // ROCKSDB_LITE
|
|
78
79
|
|
|
79
|
-
|
|
80
|
+
DEFINE_string(cache_type, "lru_cache", "Type of block cache.");
|
|
80
81
|
|
|
81
82
|
// ## BEGIN stress_cache_key sub-tool options ##
|
|
82
83
|
// See class StressCacheKey below.
|
|
@@ -279,13 +280,15 @@ class CacheBench {
|
|
|
279
280
|
if (max_key > (static_cast<uint64_t>(1) << max_log_)) max_log_++;
|
|
280
281
|
}
|
|
281
282
|
|
|
282
|
-
if (
|
|
283
|
+
if (FLAGS_cache_type == "clock_cache") {
|
|
283
284
|
cache_ = NewClockCache(FLAGS_cache_size, FLAGS_num_shard_bits);
|
|
284
285
|
if (!cache_) {
|
|
285
286
|
fprintf(stderr, "Clock cache not supported.\n");
|
|
286
287
|
exit(1);
|
|
287
288
|
}
|
|
288
|
-
} else {
|
|
289
|
+
} else if (FLAGS_cache_type == "fast_lru_cache") {
|
|
290
|
+
cache_ = NewFastLRUCache(FLAGS_cache_size, FLAGS_num_shard_bits);
|
|
291
|
+
} else if (FLAGS_cache_type == "lru_cache") {
|
|
289
292
|
LRUCacheOptions opts(FLAGS_cache_size, FLAGS_num_shard_bits, false, 0.5);
|
|
290
293
|
#ifndef ROCKSDB_LITE
|
|
291
294
|
if (!FLAGS_secondary_cache_uri.empty()) {
|
|
@@ -303,6 +306,9 @@ class CacheBench {
|
|
|
303
306
|
#endif // ROCKSDB_LITE
|
|
304
307
|
|
|
305
308
|
cache_ = NewLRUCache(opts);
|
|
309
|
+
} else {
|
|
310
|
+
fprintf(stderr, "Cache type not supported.");
|
|
311
|
+
exit(1);
|
|
306
312
|
}
|
|
307
313
|
}
|
|
308
314
|
|