-
Notifications
You must be signed in to change notification settings - Fork 99
compaction: add a new option 'check_range_overlap_on_bottom_level' for manual compact #421
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 1 commit
1b0c172
424ac4f
209d988
94c0908
4bc323c
30a4f92
c24fc99
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -1234,7 +1234,10 @@ Status DBImpl::CompactRangeInternal(const CompactRangeOptions& options, | |
| check_overlap_within_file = false; | ||
| } | ||
| } | ||
| if (!check_overlap_within_file) { | ||
| if (!check_overlap_within_file || | ||
| (!overlap && options.bottom_level_check_range_overlap && | ||
|
||
| level == | ||
| current_version->storage_info()->num_non_empty_levels() - 1)) { | ||
| overlap = current_version->storage_info()->OverlapInLevel(level, | ||
| begin, end); | ||
| } | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -2020,6 +2020,11 @@ struct CompactRangeOptions { | |
| // user-provided setting. This enables customers to selectively override the | ||
| // age cutoff. | ||
| double blob_garbage_collection_age_cutoff = -1; | ||
|
|
||
| // If set to true, it will check file range overlap instead of keys overlap | ||
| // for the bottom level. This is used in manual compact for SST ingestion | ||
| // scenario. | ||
| bool bottom_level_check_range_overlap = false; | ||
|
||
| }; | ||
|
|
||
| // IngestExternalFileOptions is used by IngestExternalFile() | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why
!check_overlap_within_fileis not sufficient?rocksdb/db/db_impl/db_impl_compaction_flush.cc
Lines 1225 to 1227 in 2b04d05
Seems that if there are partitioner boundaries within the target range, it will trigger a compaction, not trivial move (by setting overlap to the current level)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, you are right, it's better to just change the
CanDoTrivialMoveimplement in the SSTPartitioner. No need to add a new option.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
But it seems
CanDoTrivialMovecan't tell whether we are at the bottommost level? It only sees the key rangeThere was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, but I think we should force partition/manual compact the overlapped SST files in all the level, not only the bottom level. This approach should gain better compatibility. So reuse
CanDoTrivialMoveis enough here.