Enable subcompactions in manual level-based compaction
Summary: This is the simplest way I could think of to speed up `CompactRange`. It works but isn't that optimal because it relies on the same `max_compaction_bytes` and `max_subcompactions` options that are used in other places. If it turns out to be useful we can allow overriding these in `CompactRangeOptions` in the future. Closes https://github.com/facebook/rocksdb/pull/3549 Differential Revision: D7117634 Pulled By: ajkr fbshipit-source-id: d0cd03d6bd0d2fd7ea3fb13cd3b8bf7c47d11e42
This commit is contained in:
parent
3462c94be7
commit
20c508c1ed
@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
### New Features
|
### New Features
|
||||||
* Avoid unnecessarily flushing in `CompactRange()` when the range specified by the user does not overlap unflushed memtables.
|
* Avoid unnecessarily flushing in `CompactRange()` when the range specified by the user does not overlap unflushed memtables.
|
||||||
|
* If `ColumnFamilyOptions::max_subcompactions` is set greater than one, we now parallelize large manual level-based compactions.
|
||||||
* Add "rocksdb.live-sst-files-size" DB property to return total bytes of all SST files belong to the latest LSM tree.
|
* Add "rocksdb.live-sst-files-size" DB property to return total bytes of all SST files belong to the latest LSM tree.
|
||||||
|
|
||||||
### Bug Fixes
|
### Bug Fixes
|
||||||
|
@ -446,7 +446,8 @@ bool Compaction::ShouldFormSubcompactions() const {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (cfd_->ioptions()->compaction_style == kCompactionStyleLevel) {
|
if (cfd_->ioptions()->compaction_style == kCompactionStyleLevel) {
|
||||||
return start_level_ == 0 && output_level_ > 0 && !IsOutputLevelEmpty();
|
return (start_level_ == 0 || is_manual_compaction_) && output_level_ > 0 &&
|
||||||
|
!IsOutputLevelEmpty();
|
||||||
} else if (cfd_->ioptions()->compaction_style == kCompactionStyleUniversal) {
|
} else if (cfd_->ioptions()->compaction_style == kCompactionStyleUniversal) {
|
||||||
return number_levels_ > 1 && output_level_ > 0;
|
return number_levels_ > 1 && output_level_ > 0;
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user