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
aligned_buffer.h -rw-r--r-- 4.8 KB
allocator.h -rw-r--r-- 1.6 KB
arena.cc -rw-r--r-- 7.1 KB
arena.h -rw-r--r-- 5.1 KB
arena_test.cc -rw-r--r-- 6.6 KB
auto_roll_logger.cc -rw-r--r-- 5.4 KB
auto_roll_logger.h -rw-r--r-- 4.2 KB
auto_roll_logger_test.cc -rw-r--r-- 18.3 KB
autovector.h -rw-r--r-- 8.7 KB
autovector_test.cc -rw-r--r-- 9.4 KB
bloom.cc -rw-r--r-- 11.3 KB
bloom_test.cc -rw-r--r-- 7.8 KB
build_version.cc.in -rw-r--r-- 232 bytes
build_version.h -rw-r--r-- 600 bytes
cast_util.h -rw-r--r-- 849 bytes
channel.h -rw-r--r-- 1.5 KB
coding.cc -rw-r--r-- 2.5 KB
coding.h -rw-r--r-- 12.5 KB
coding_test.cc -rw-r--r-- 5.8 KB
compaction_job_stats_impl.cc -rw-r--r-- 2.3 KB
comparator.cc -rw-r--r-- 5.2 KB
compression.h -rw-r--r-- 28.9 KB
concurrent_arena.cc -rw-r--r-- 1.3 KB
concurrent_arena.h -rw-r--r-- 7.4 KB
core_local.h -rw-r--r-- 2.4 KB
crc32c.cc -rw-r--r-- 41.6 KB
crc32c.h -rw-r--r-- 1.6 KB
crc32c_ppc.c -rw-r--r-- 2.6 KB
crc32c_ppc.h -rw-r--r-- 685 bytes
crc32c_ppc_asm.S -rw-r--r-- 13.6 KB
crc32c_ppc_constants.h -rw-r--r-- 34.4 KB
crc32c_test.cc -rw-r--r-- 4.9 KB
delete_scheduler.cc -rw-r--r-- 9.7 KB
delete_scheduler.h -rw-r--r-- 4.6 KB
delete_scheduler_test.cc -rw-r--r-- 23.6 KB
duplicate_detector.h -rw-r--r-- 2.3 KB
dynamic_bloom.cc -rw-r--r-- 2.7 KB
dynamic_bloom.h -rw-r--r-- 6.6 KB
dynamic_bloom_test.cc -rw-r--r-- 9.8 KB
event_logger.cc -rw-r--r-- 1.7 KB
event_logger.h -rw-r--r-- 4.5 KB
event_logger_test.cc -rw-r--r-- 1.2 KB
fault_injection_test_env.cc -rw-r--r-- 9.2 KB
fault_injection_test_env.h -rw-r--r-- 5.1 KB
file_reader_writer.cc -rw-r--r-- 21.7 KB
file_reader_writer.h -rw-r--r-- 7.0 KB
file_reader_writer_test.cc -rw-r--r-- 10.9 KB
file_util.cc -rw-r--r-- 2.9 KB
file_util.h -rw-r--r-- 1.0 KB
filelock_test.cc -rw-r--r-- 1.3 KB
filename.cc -rw-r--r-- 12.4 KB
filename.h -rw-r--r-- 6.5 KB
filter_policy.cc -rw-r--r-- 598 bytes
gflags_compat.h -rw-r--r-- 459 bytes
hash.cc -rw-r--r-- 1.9 KB
hash.h -rw-r--r-- 1.0 KB
hash_map.h -rw-r--r-- 1.9 KB
hash_test.cc -rw-r--r-- 3.6 KB
heap.h -rw-r--r-- 4.9 KB
heap_test.cc -rw-r--r-- 3.8 KB
kv_map.h -rw-r--r-- 909 bytes
log_buffer.cc -rw-r--r-- 2.4 KB
log_buffer.h -rw-r--r-- 1.7 KB
log_write_bench.cc -rw-r--r-- 2.5 KB
logging.h -rw-r--r-- 2.1 KB
memory_usage.h -rw-r--r-- 844 bytes
murmurhash.cc -rw-r--r-- 4.2 KB
murmurhash.h -rw-r--r-- 1.3 KB
mutexlock.h -rw-r--r-- 3.3 KB
ppc-opcode.h -rw-r--r-- 1.3 KB
random.cc -rw-r--r-- 975 bytes
random.h -rw-r--r-- 3.5 KB
rate_limiter.cc -rw-r--r-- 11.9 KB
rate_limiter.h -rw-r--r-- 3.3 KB
rate_limiter_test.cc -rw-r--r-- 9.2 KB
set_comparator.h -rw-r--r-- 809 bytes
slice.cc -rw-r--r-- 5.6 KB
slice_transform_test.cc -rw-r--r-- 4.4 KB
sst_file_manager_impl.cc -rw-r--r-- 7.8 KB
sst_file_manager_impl.h -rw-r--r-- 4.8 KB
status.cc -rw-r--r-- 3.0 KB
status_message.cc -rw-r--r-- 946 bytes
stderr_logger.h -rw-r--r-- 850 bytes
stop_watch.h -rw-r--r-- 2.3 KB
string_util.cc -rw-r--r-- 9.1 KB
string_util.h -rw-r--r-- 4.2 KB
sync_point.cc -rw-r--r-- 1.6 KB
sync_point.h -rw-r--r-- 4.8 KB
sync_point_impl.cc -rw-r--r-- 3.5 KB
sync_point_impl.h -rw-r--r-- 2.4 KB
testharness.cc -rw-r--r-- 1.2 KB
testharness.h -rw-r--r-- 1.3 KB
testutil.cc -rw-r--r-- 13.4 KB
testutil.h -rw-r--r-- 22.9 KB
thread_list_test.cc -rw-r--r-- 11.7 KB
thread_local.cc -rw-r--r-- 18.6 KB
thread_local.h -rw-r--r-- 3.6 KB
thread_local_test.cc -rw-r--r-- 14.4 KB
thread_operation.h -rw-r--r-- 3.9 KB
threadpool_imp.cc -rw-r--r-- 13.4 KB
threadpool_imp.h -rw-r--r-- 3.6 KB
timer_queue.h -rw-r--r-- 6.9 KB
timer_queue_test.cc -rw-r--r-- 2.1 KB
transaction_test_util.cc -rw-r--r-- 10.2 KB
transaction_test_util.h -rw-r--r-- 4.5 KB
xxhash.cc -rw-r--r-- 15.2 KB
xxhash.h -rw-r--r-- 6.2 KB

back to top