private long estimatePartitionsCount(Collection<SSTableReader> sstables, Range<Token> range) { long count = 0; for (SSTableReader sstable : sstables) count += sstable.estimatedKeysForRanges(Collections.singleton(range)); return count; }
public long estimatedKeysForRange(Range<Token> range) { try (RefViewFragment view = selectAndReference(CANONICAL_SSTABLES)) { long count = 0; for (SSTableReader sstable : view.sstables) count += sstable.estimatedKeysForRanges(Collections.singleton(range)); return count; } }
public LeveledScanner(Collection<SSTableReader> sstables, Range<Token> range) { this.range = range; // add only sstables that intersect our range, and estimate how much data that involves this.sstables = new ArrayList<SSTableReader>(sstables.size()); long length = 0; for (SSTableReader sstable : sstables) { this.sstables.add(sstable); long estimatedKeys = sstable.estimatedKeys(); double estKeysInRangeRatio = 1.0; if (estimatedKeys > 0 && range != null) estKeysInRangeRatio = ((double) sstable.estimatedKeysForRanges(Collections.singleton(range))) / estimatedKeys; length += sstable.uncompressedLength() * estKeysInRangeRatio; } totalLength = length; Collections.sort(this.sstables, SSTableReader.sstableComparator); sstableIterator = this.sstables.iterator(); assert sstableIterator.hasNext(); // caller should check intersecting first currentScanner = sstableIterator.next().getScanner(range, CompactionManager.instance.getRateLimiter()); }
long estimatedKeys = sstable.estimatedKeysForRanges(tokenRanges); Ref ref = sstable.tryRef(); if (ref == null)
sections.add(new SSTableStreamingSections(refs.get(sstable), sstable.getPositionsForRanges(ranges), sstable.estimatedKeysForRanges(ranges), repairedAt));
for (SSTableReader overlap : overlaps) ranges.add(new Range<Token>(overlap.first.getToken(), overlap.last.getToken(), overlap.partitioner)); long remainingKeys = keys - sstable.estimatedKeysForRanges(ranges);
for (SSTableReader sstable : sstables) numPartitions += sstable.estimatedKeysForRanges(Collections.singleton(validator.desc.range));