rocksdb/db
Andrew Kryczka 3f6b2d7a80 Redesign block cache pinning API (#7520)
Summary:
The old flag-based APIs (`BlockBasedTableOptions::pin_l0_filter_and_index_blocks_in_cache` and `BlockBasedTableOptions::pin_top_level_index_and_filter`) were insufficient for our needs. For example, it was impossible to pin only unpartitioned meta-blocks, which could prevent block cache contention when turning on dictionary compression or during a migration to partitioned indexes/filters. It was also impossible to pin all meta-blocks in memory while having predictable memory usage via block cache. If we had continued adding flags to address these scenarios, they would have had significant overlap causing confusion. Instead, this PR deprecates the flags and starts a new API with non-overlapping options.

Pull Request resolved: https://github.com/facebook/rocksdb/pull/7520

Test Plan:
- new unit test
- added new options to stress/crash test and ran for a while: `$ python tools/db_crashtest.py blackbox --simple --max_key=1000000 -write_buffer_size=1048576 -target_file_size_base=1048576 -max_bytes_for_level_base=4194304 --interval=10 -value_size_mult=33 -column_families=1 -reopen=0`

Reviewed By: pdillinger

Differential Revision: D24200034

Pulled By: ajkr

fbshipit-source-id: 3fa7cfc71e7960f7a867511dd6ae5834dd73b13e
2020-10-19 14:18:57 -07:00
..
blob
compaction
db_impl
arena_wrapped_db_iter.cc
arena_wrapped_db_iter.h
builder.cc
builder.h
c.cc
c_test.c
column_family.cc
column_family.h
column_family_test.cc
compact_files_test.cc
compacted_db_impl.cc
compacted_db_impl.h
comparator_db_test.cc
convenience.cc
corruption_test.cc
cuckoo_table_db_test.cc
db_basic_test.cc
db_block_cache_test.cc
db_bloom_filter_test.cc
db_compaction_filter_test.cc
db_compaction_test.cc
db_dynamic_level_test.cc
db_encryption_test.cc
db_filesnapshot.cc
db_flush_test.cc
db_info_dumper.cc
db_info_dumper.h
db_inplace_update_test.cc
db_io_failure_test.cc
db_iter.cc
db_iter.h
db_iter_stress_test.cc
db_iter_test.cc
db_iterator_test.cc
db_log_iter_test.cc
db_logical_block_size_cache_test.cc
db_memtable_test.cc
db_merge_operand_test.cc
db_merge_operator_test.cc
db_options_test.cc
db_properties_test.cc
db_range_del_test.cc
db_sst_test.cc
db_statistics_test.cc
db_table_properties_test.cc
db_tailing_iter_test.cc
db_test.cc
db_test2.cc
db_test_util.cc
db_test_util.h
db_universal_compaction_test.cc
db_wal_test.cc
db_with_timestamp_basic_test.cc
db_with_timestamp_compaction_test.cc
db_write_test.cc
dbformat.cc
dbformat.h
dbformat_test.cc
deletefile_test.cc
error_handler.cc
error_handler.h
error_handler_fs_test.cc
event_helpers.cc
event_helpers.h
experimental.cc
external_sst_file_basic_test.cc
external_sst_file_ingestion_job.cc
external_sst_file_ingestion_job.h
external_sst_file_test.cc
fault_injection_test.cc
file_indexer.cc
file_indexer.h
file_indexer_test.cc
filename_test.cc
flush_job.cc
flush_job.h
flush_job_test.cc
flush_scheduler.cc
flush_scheduler.h
forward_iterator.cc
forward_iterator.h
forward_iterator_bench.cc
import_column_family_job.cc
import_column_family_job.h
import_column_family_test.cc
internal_stats.cc
internal_stats.h
job_context.h
listener_test.cc
log_format.h
log_reader.cc
log_reader.h
log_test.cc
log_writer.cc
log_writer.h
logs_with_prep_tracker.cc
logs_with_prep_tracker.h
lookup_key.h
malloc_stats.cc
malloc_stats.h
manual_compaction_test.cc
memtable.cc
memtable.h
memtable_list.cc
memtable_list.h
memtable_list_test.cc
merge_context.h
merge_helper.cc
merge_helper.h
merge_helper_test.cc
merge_operator.cc
merge_test.cc
obsolete_files_test.cc
options_file_test.cc
perf_context_test.cc
pinned_iterators_manager.h
plain_table_db_test.cc
pre_release_callback.h
prefix_test.cc
range_del_aggregator.cc
range_del_aggregator.h
range_del_aggregator_bench.cc
range_del_aggregator_test.cc
range_tombstone_fragmenter.cc
range_tombstone_fragmenter.h
range_tombstone_fragmenter_test.cc
read_callback.h
repair.cc
repair_test.cc
snapshot_checker.h
snapshot_impl.cc
snapshot_impl.h
table_cache.cc
table_cache.h
table_properties_collector.cc
table_properties_collector.h
table_properties_collector_test.cc
transaction_log_impl.cc
transaction_log_impl.h
trim_history_scheduler.cc
trim_history_scheduler.h
version_builder.cc
version_builder.h
version_builder_test.cc
version_edit.cc
version_edit.h
version_edit_handler.cc
version_edit_handler.h
version_edit_test.cc
version_set.cc
version_set.h
version_set_test.cc
wal_edit.cc
wal_edit.h
wal_edit_test.cc
wal_manager.cc
wal_manager.h
wal_manager_test.cc
write_batch.cc
write_batch_base.cc
write_batch_internal.h
write_batch_test.cc
write_callback.h
write_callback_test.cc
write_controller.cc
write_controller.h
write_controller_test.cc
write_thread.cc
write_thread.h