Revision a736255de86d6920a2d755e6be5fea7d602554a8 authored by Anand Ananthabhotla on 29 May 2018, 22:42:14 UTC, committed by Facebook Github Bot on 29 May 2018, 22:44:34 UTC
Summary:
This is still WIP, but I'm hoping for early feedback on the overall approach.

This patch implements deletion triggered compaction, which till now only
worked for leveled, for universal style. SST files are marked for
compaction by the CompactOnDeletionCollertor table property. This is
expected to be used when free disk space is low and the user wants to
reclaim space by deleting a bunch of keys. The deletions are expected to
be dense. In such a situation, we want to avoid a full compaction due to
its space overhead.

The strategy used in this case is similar to leveled. We pick one file
from the set of files marked for compaction. We then expand the inputs
to a clean cut on the same level, and then pick overlapping files from
the next non-mepty level. Picking files from the next level can cause
the key range to expand, and we opportunistically expand inputs in the
source level to include files wholly in this key range.

The main side effect of this is that it breaks the property of no time
range overlap between levels. This shouldn't break any functionality.
Closes https://github.com/facebook/rocksdb/pull/3860

Differential Revision: D8124397

Pulled By: anand1976

fbshipit-source-id: bfa2a9dd6817930e991b35d3a8e7e61304ed3dcf
1 parent 724855c
History
File Mode Size
buckify_rocksdb.py -rw-r--r-- 5.1 KB
rocks_test_runner.sh -rwxr-xr-x 196 bytes
targets_builder.py -rw-r--r-- 1.9 KB
targets_cfg.py -rw-r--r-- 3.7 KB
util.py -rw-r--r-- 3.1 KB

back to top