@nxtedition/rocksdb 7.0.0-alpha.6 → 7.0.0
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 +37 -36
- 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 +5 -2
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/darwin-x64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
package/binding.cc
CHANGED
|
@@ -526,7 +526,7 @@ struct Iterator final : public BaseIterator {
|
|
|
526
526
|
const bool fillCache,
|
|
527
527
|
const bool keyAsBuffer,
|
|
528
528
|
const bool valueAsBuffer,
|
|
529
|
-
const
|
|
529
|
+
const int32_t highWaterMarkBytes,
|
|
530
530
|
std::shared_ptr<const rocksdb::Snapshot> snapshot)
|
|
531
531
|
: BaseIterator(database, column, reverse, lt, lte, gt, gte, limit, fillCache, snapshot),
|
|
532
532
|
keys_(keys),
|
|
@@ -551,7 +551,7 @@ struct Iterator final : public BaseIterator {
|
|
|
551
551
|
const bool values_;
|
|
552
552
|
const bool keyAsBuffer_;
|
|
553
553
|
const bool valueAsBuffer_;
|
|
554
|
-
const
|
|
554
|
+
const int32_t highWaterMarkBytes_;
|
|
555
555
|
bool first_ = true;
|
|
556
556
|
|
|
557
557
|
private:
|
|
@@ -691,85 +691,86 @@ struct OpenWorker final : public Worker {
|
|
|
691
691
|
std::vector<rocksdb::ColumnFamilyDescriptor> column_families_;
|
|
692
692
|
};
|
|
693
693
|
|
|
694
|
-
|
|
695
|
-
|
|
694
|
+
template <typename T>
|
|
695
|
+
napi_status InitOptions(napi_env env, T& columnOptions, auto options) {
|
|
696
|
+
const auto memtable_memory_budget = Uint32Property(env, options, "memtableMemoryBudget").value_or(256 * 1024 * 1024);
|
|
696
697
|
|
|
697
|
-
const auto compaction = StringProperty(env,
|
|
698
|
+
const auto compaction = StringProperty(env, options, "compaction").value_or("level");
|
|
698
699
|
|
|
699
700
|
if (compaction == "universal") {
|
|
700
|
-
|
|
701
|
+
columnOptions.write_buffer_size = static_cast<size_t>(memtable_memory_budget / 4);
|
|
701
702
|
// merge two memtables when flushing to L0
|
|
702
|
-
|
|
703
|
+
columnOptions.min_write_buffer_number_to_merge = 2;
|
|
703
704
|
// this means we'll use 50% extra memory in the worst case, but will reduce
|
|
704
705
|
// write stalls.
|
|
705
|
-
|
|
706
|
+
columnOptions.max_write_buffer_number = 6;
|
|
706
707
|
// universal style compaction
|
|
707
|
-
|
|
708
|
-
|
|
708
|
+
columnOptions.compaction_style = rocksdb::kCompactionStyleUniversal;
|
|
709
|
+
columnOptions.compaction_options_universal.compression_size_percent = 80;
|
|
709
710
|
} else {
|
|
710
711
|
// merge two memtables when flushing to L0
|
|
711
|
-
|
|
712
|
+
columnOptions.min_write_buffer_number_to_merge = 2;
|
|
712
713
|
// this means we'll use 50% extra memory in the worst case, but will reduce
|
|
713
714
|
// write stalls.
|
|
714
|
-
|
|
715
|
+
columnOptions.max_write_buffer_number = 6;
|
|
715
716
|
// start flushing L0->L1 as soon as possible. each file on level0 is
|
|
716
717
|
// (memtable_memory_budget / 2). This will flush level 0 when it's bigger than
|
|
717
718
|
// memtable_memory_budget.
|
|
718
|
-
|
|
719
|
+
columnOptions.level0_file_num_compaction_trigger = 2;
|
|
719
720
|
// doesn't really matter much, but we don't want to create too many files
|
|
720
|
-
|
|
721
|
+
columnOptions.target_file_size_base = memtable_memory_budget / 8;
|
|
721
722
|
// make Level1 size equal to Level0 size, so that L0->L1 compactions are fast
|
|
722
|
-
|
|
723
|
+
columnOptions.max_bytes_for_level_base = memtable_memory_budget;
|
|
723
724
|
|
|
724
725
|
// level style compaction
|
|
725
|
-
|
|
726
|
+
columnOptions.compaction_style = rocksdb::kCompactionStyleLevel;
|
|
726
727
|
|
|
727
728
|
// TODO (perf): only compress levels >= 2
|
|
728
729
|
}
|
|
729
730
|
|
|
730
|
-
|
|
731
|
-
BooleanProperty(env,
|
|
732
|
-
if (
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
//
|
|
731
|
+
columnOptions.compression =
|
|
732
|
+
BooleanProperty(env, options, "compression").value_or((true)) ? rocksdb::kZSTD : rocksdb::kNoCompression;
|
|
733
|
+
if (columnOptions.compression == rocksdb::kZSTD) {
|
|
734
|
+
columnOptions.compression_opts.max_dict_bytes = 16 * 1024;
|
|
735
|
+
columnOptions.compression_opts.zstd_max_train_bytes = 16 * 1024 * 100;
|
|
736
|
+
// columnOptions.compression_opts.parallel_threads
|
|
736
737
|
}
|
|
737
738
|
|
|
738
|
-
const auto cacheSize = Uint32Property(env,
|
|
739
|
+
const auto cacheSize = Uint32Property(env, options, "cacheSize").value_or(8 << 20);
|
|
739
740
|
|
|
740
741
|
rocksdb::BlockBasedTableOptions tableOptions;
|
|
741
742
|
|
|
742
743
|
if (cacheSize) {
|
|
743
744
|
tableOptions.block_cache = rocksdb::NewLRUCache(cacheSize);
|
|
744
745
|
tableOptions.cache_index_and_filter_blocks =
|
|
745
|
-
BooleanProperty(env,
|
|
746
|
+
BooleanProperty(env, options, "cacheIndexAndFilterBlocks").value_or(true);
|
|
746
747
|
} else {
|
|
747
748
|
tableOptions.no_block_cache = true;
|
|
748
749
|
tableOptions.cache_index_and_filter_blocks = false;
|
|
749
750
|
}
|
|
750
751
|
|
|
751
|
-
const auto optimize = StringProperty(env,
|
|
752
|
+
const auto optimize = StringProperty(env, options, "optimize").value_or("");
|
|
752
753
|
|
|
753
754
|
if (optimize == "point-lookup") {
|
|
754
755
|
tableOptions.data_block_index_type = rocksdb::BlockBasedTableOptions::kDataBlockBinaryAndHash;
|
|
755
756
|
tableOptions.data_block_hash_table_util_ratio = 0.75;
|
|
756
757
|
tableOptions.filter_policy.reset(rocksdb::NewRibbonFilterPolicy(10, 1));
|
|
757
758
|
|
|
758
|
-
|
|
759
|
-
|
|
759
|
+
columnOptions.memtable_prefix_bloom_size_ratio = 0.02;
|
|
760
|
+
columnOptions.memtable_whole_key_filtering = true;
|
|
760
761
|
} else if (optimize == "range-lookup") {
|
|
761
762
|
// TODO?
|
|
762
763
|
} else {
|
|
763
764
|
tableOptions.filter_policy.reset(rocksdb::NewRibbonFilterPolicy(10));
|
|
764
765
|
}
|
|
765
766
|
|
|
766
|
-
tableOptions.block_size = Uint32Property(env,
|
|
767
|
-
tableOptions.block_restart_interval = Uint32Property(env,
|
|
767
|
+
tableOptions.block_size = Uint32Property(env, options, "blockSize").value_or(4096);
|
|
768
|
+
tableOptions.block_restart_interval = Uint32Property(env, options, "blockRestartInterval").value_or(16);
|
|
768
769
|
tableOptions.format_version = 5;
|
|
769
770
|
tableOptions.checksum = rocksdb::kXXH3;
|
|
770
|
-
tableOptions.optimize_filters_for_memory = BooleanProperty(env,
|
|
771
|
+
tableOptions.optimize_filters_for_memory = BooleanProperty(env, options, "optimizeFiltersForMemory").value_or(true);
|
|
771
772
|
|
|
772
|
-
|
|
773
|
+
columnOptions.table_factory.reset(rocksdb::NewBlockBasedTableFactory(tableOptions));
|
|
773
774
|
|
|
774
775
|
return napi_ok;
|
|
775
776
|
}
|
|
@@ -792,13 +793,14 @@ NAPI_METHOD(db_open) {
|
|
|
792
793
|
dbOptions.create_if_missing = BooleanProperty(env, options, "createIfMissing").value_or(true);
|
|
793
794
|
dbOptions.error_if_exists = BooleanProperty(env, options, "errorIfExists").value_or(false);
|
|
794
795
|
dbOptions.avoid_unnecessary_blocking_io = true;
|
|
795
|
-
dbOptions.use_adaptive_mutex =
|
|
796
|
-
dbOptions.enable_pipelined_write =
|
|
796
|
+
dbOptions.use_adaptive_mutex = true;
|
|
797
|
+
dbOptions.enable_pipelined_write = false;
|
|
797
798
|
dbOptions.max_background_jobs =
|
|
798
799
|
Uint32Property(env, options, "maxBackgroundJobs").value_or(std::thread::hardware_concurrency() / 4);
|
|
799
800
|
dbOptions.WAL_ttl_seconds = Uint32Property(env, options, "walTTL").value_or(0) / 1e3;
|
|
800
801
|
dbOptions.WAL_size_limit_MB = Uint32Property(env, options, "walSizeLimit").value_or(0) / 1e6;
|
|
801
802
|
dbOptions.create_missing_column_families = true;
|
|
803
|
+
dbOptions.unordered_write = BooleanProperty(env, options, "unorderedWrite").value_or(false);
|
|
802
804
|
|
|
803
805
|
const auto infoLogLevel = StringProperty(env, options, "infoLogLevel").value_or("");
|
|
804
806
|
if (infoLogLevel.size() > 0) {
|
|
@@ -1374,7 +1376,7 @@ NAPI_METHOD(iterator_init) {
|
|
|
1374
1376
|
const bool keyAsBuffer = EncodingIsBuffer(env, options, "keyEncoding");
|
|
1375
1377
|
const bool valueAsBuffer = EncodingIsBuffer(env, options, "valueEncoding");
|
|
1376
1378
|
const auto limit = Int32Property(env, options, "limit").value_or(-1);
|
|
1377
|
-
const auto highWaterMarkBytes =
|
|
1379
|
+
const auto highWaterMarkBytes = Int32Property(env, options, "highWaterMarkBytes").value_or(16 * 1024);
|
|
1378
1380
|
|
|
1379
1381
|
const auto lt = StringProperty(env, options, "lt");
|
|
1380
1382
|
const auto lte = StringProperty(env, options, "lte");
|
|
@@ -1479,7 +1481,7 @@ struct NextWorker final : public Worker {
|
|
|
1479
1481
|
cache_.push_back(v.ToString());
|
|
1480
1482
|
}
|
|
1481
1483
|
|
|
1482
|
-
if (bytesRead > iterator_->highWaterMarkBytes_ || cache_.size() / 2 >= size_) {
|
|
1484
|
+
if ((iterator_->highWaterMarkBytes_ != -1 && bytesRead > static_cast<size_t>(iterator_->highWaterMarkBytes_)) || cache_.size() / 2 >= size_) {
|
|
1483
1485
|
finished_ = false;
|
|
1484
1486
|
return rocksdb::Status::OK();
|
|
1485
1487
|
}
|
|
@@ -1546,7 +1548,6 @@ NAPI_METHOD(batch_do) {
|
|
|
1546
1548
|
NAPI_STATUS_THROWS(napi_get_value_external(env, argv[0], (void**)&database));
|
|
1547
1549
|
|
|
1548
1550
|
const auto operations = argv[1];
|
|
1549
|
-
const auto options = argv[2];
|
|
1550
1551
|
|
|
1551
1552
|
rocksdb::WriteBatch batch;
|
|
1552
1553
|
|
|
@@ -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
|
|