mirror of
https://github.com/scylladb/scylladb.git
synced 2026-05-12 19:02:12 +00:00
These patches contain some minor fixes for performance regression reported by perf_fast_forward after partial cache was merged. The solution is still far from perfect, there is one case that still has 30% degradation, but there is some improvement so there is no reason to hold these changes back. Refs #2582. Some numbers: before - before cache changes were merged (555621b537) cache - at the commit that introduced the partial cache (9b21a9bfb6) after - recent master + this series (based one988121dbb) Differences are shown relative to "before". Testing effectiveness of caching of large partition, single-key slicing reads: Large partitions, range [0, 500000], populating cache before cache after 1636840 1013688 1234606 -38% -25% Large partitions, range [0, 500000], reading from cache before cache after 2012615 3076812 3035423 +53% +51% Testing scanning small partitions with skips. reading small partitions (skip 0) before cache after 227060 165261 200639 -27% -11% skipping small partitions (skip 1) before cache after 29813 27312 38210 -8% +28% Testing slicing small partitions: slicing small partitions (offset 0, read 4096) before cache after 195282 149695 180497 -23% -8% * https://github.com/pdziepak/scylla.git perf_fast_forward-regression/v3: sstables: make sure that fill_buffer() actually fills buffer mutation_merger: improve handling of non-deferring fill_buffer()s partition_snapshot_row_cursor: avoid apply() in single-version cases sstables: introduce decorated_key_view ring_position_comparator: accept sstables::decorated_key_view sstable: keep a pre-computed token in summary_entry sstables: cache token in index entries index_reader: advance_and_check_if_present() use index_comparator ring_position_comparator: drop unused overloads cache_streamed_mutation: avoid moving clustering_row streamed_mutation: introduce consume_mutation_fragments_until() cache_streamed_mutation: use consumer based read_context reader rows_entry: make position() inlineable mutation_fragment: make destructor always_inline keys: introduce compound_wrapper::from_exploded_view() sstables: avoid copying key components compound_compat: explode: reserve some elements in a vector cache: short-circut static row logic if there are no static columns cache: use equality comparators instead of tri_compare sstables: avoid indirect calls to abstract_type::is_multi_cell() (cherry picked from commite9fc0b0491)