mirror of
https://github.com/scylladb/scylladb.git
synced 2026-06-03 13:37:04 +00:00
"This series makes several optimizations to sstable mutation reader relevant for large partitions. Some highlights: One optimization is to use the index for skipping across clustering restrictions. Currently we read whole partition in such cases. That includes the case when we need to read a static row and then jump to some clustering row in the middle of the partition. Another case is having more than one clustering restriction, e.g. selecting multiple single rows from the same partition. Another optimization is using information from the index for creation of streamed_mutation. That can save us the cost of reading the partition header form the data file in case we would not continue reading, but skip to the middle of that partition. Or we may not even attempt to read anything from that partition, if after we determine the key that reader will be put behind other readers, which will exhaust the query limit first. Another optimization is switching single-partition queries to use the index_reader infrastructure. Index lookups via index_reader are faster than find_disk_ranges(). This is also a cleanup, a step towards converting all code to use the index_reader." * tag 'tgrabiec/optimize-sstable-reads-with-restrictions-v2' of github.com:cloudius-systems/seastar-dev: (44 commits) sstables: Remove unused code sstables: mutation_reader: Use index_reader::advance_to_next_partition() to skip to next partition sstables: mutation_reader: Use index_reader for single-partition reads sstables: mutation_reader: Add trace-level logging sstables: mutation_reader: Move partition reading code to sstable_data_source sstables: mutation_reader: Move definitions out of the class body sstables: Move binary_search() to a header database: Pass partition_range to single_key_sstable_reader to avoid copies and decorating sstables: index_reader: Introduce advance_to_next_partition() sstables: index_reader: Introduce advance_and_check_if_present() sstables: index_reader: Introduce advance_past() sstables: index_reader: Make copyable sstables: index_reader: Optimize advancing to extreme positions sstables: index_reader: Keep two last pages alive dht: ring_position_view: Add key getter dht: ring_position_view: Add constructor and factory from ring_position_view sstables: mutation_reader: Advance to next partition using index in some cases sstables: index_reader: Expose access to partition key and tombstone sstables: index_reader: Introduce promoted_index_view sstables: mutation_reader: Move _index_in_current to sstable_data_source ...