diff options
author | Vardhan <vvarma@sightmachine.com> | 2023-08-02 19:58:56 -0700 |
---|---|---|
committer | Facebook GitHub Bot <facebook-github-bot@users.noreply.github.com> | 2023-08-02 19:58:56 -0700 |
commit | 87a21d08fe606055ed79144b725445c38b4e0ae2 (patch) | |
tree | 7a98a8927bfa87f524413b0390a355fe49bc0ac9 /options/cf_options.h | |
parent | f9de217353f2d45f06fe5b9eab50b191f1a2d7a2 (diff) |
Add an option to trigger flush when the number of range deletions reach a threshold (#11358)
Summary:
Add a mutable column family option `memtable_max_range_deletions`. When non-zero, RocksDB will try to flush the current memtable after it has at least `memtable_max_range_deletions` range deletions. Java API is added and crash test is updated accordingly to randomly enable this option.
Pull Request resolved: https://github.com/facebook/rocksdb/pull/11358
Test Plan:
* New unit test: `DBRangeDelTest.MemtableMaxRangeDeletions`
* Ran crash test `python3 ./tools/db_crashtest.py whitebox --simple --memtable_max_range_deletions=20` and saw logs showing flushed memtables usually with 20 range deletions.
Reviewed By: ajkr
Differential Revision: D46582680
Pulled By: cbi42
fbshipit-source-id: f23d6fa8d8264ecf0a18d55c113ba03f5e2504da
Diffstat (limited to 'options/cf_options.h')
-rw-r--r-- | options/cf_options.h | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/options/cf_options.h b/options/cf_options.h index 37ef54c0c..86de78d9d 100644 --- a/options/cf_options.h +++ b/options/cf_options.h @@ -175,7 +175,8 @@ struct MutableCFOptions { block_protection_bytes_per_key(options.block_protection_bytes_per_key), sample_for_compression( options.sample_for_compression), // TODO: is 0 fine here? - compression_per_level(options.compression_per_level) { + compression_per_level(options.compression_per_level), + memtable_max_range_deletions(options.memtable_max_range_deletions) { RefreshDerivedOptions(options.num_levels, options.compaction_style); } @@ -224,7 +225,8 @@ struct MutableCFOptions { last_level_temperature(Temperature::kUnknown), memtable_protection_bytes_per_key(0), block_protection_bytes_per_key(0), - sample_for_compression(0) {} + sample_for_compression(0), + memtable_max_range_deletions(0) {} explicit MutableCFOptions(const Options& options); @@ -318,6 +320,7 @@ struct MutableCFOptions { uint64_t sample_for_compression; std::vector<CompressionType> compression_per_level; + uint32_t memtable_max_range_deletions; // Derived options // Per-level target file size. |