Class IndexSummary
- java.lang.Object
-
- org.apache.cassandra.utils.concurrent.SharedCloseableImpl
-
- org.apache.cassandra.utils.concurrent.WrappedSharedCloseable
-
- org.apache.cassandra.io.sstable.indexsummary.IndexSummary
-
- All Implemented Interfaces:
java.lang.AutoCloseable
,SharedCloseable
public class IndexSummary extends WrappedSharedCloseable
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
IndexSummary.IndexSummarySerializer
-
Field Summary
Fields Modifier and Type Field Description static IndexSummary.IndexSummarySerializer
serializer
-
Constructor Summary
Constructors Constructor Description IndexSummary(IPartitioner partitioner, Memory offsets, int offsetCount, Memory entries, long entriesLength, int sizeAtFullSampling, int minIndexInterval, int samplingLevel)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addTo(Ref.IdentityCollection identities)
int
binarySearch(PartitionPosition key)
double
getEffectiveIndexInterval()
int
getEffectiveIndexIntervalAfterIndex(int index)
Returns the number of primary (on-disk) index entries between the index summary entry at `index` and the next index summary entry (assuming there is one).long
getEndInSummary(int index)
long
getEstimatedKeyCount()
Returns an estimate of the total number of keys in the SSTable.static int
getIndexFromBinarySearchResult(int binarySearchResult)
byte[]
getKey(int index)
java.lang.Iterable<byte[]>
getKeySamples(Range<Token> range)
int
getMaxNumberOfEntries()
Returns the number of entries this summary would have if it were at the full sampling level, which is equal to the number of entries in the primary on-disk index divided by the min index interval.int
getMinIndexInterval()
long
getOffHeapSize()
long
getPosition(int index)
int
getPositionInSummary(int index)
Gets the position of the actual index summary entry in our Memory attribute, 'bytes'.java.util.List<SSTableReader.IndexesBounds>
getSampleIndexesForRanges(java.util.Collection<Range<Token>> ranges)
int
getSamplingLevel()
long
getScanPosition(PartitionPosition key)
long
getScanPositionFromBinarySearchResult(int binarySearchResult)
IndexSummary
sharedCopy()
int
size()
-
Methods inherited from class org.apache.cassandra.utils.concurrent.SharedCloseableImpl
close, close, isCleanedUp
-
-
-
-
Field Detail
-
serializer
public static final IndexSummary.IndexSummarySerializer serializer
-
-
Constructor Detail
-
IndexSummary
public IndexSummary(IPartitioner partitioner, Memory offsets, int offsetCount, Memory entries, long entriesLength, int sizeAtFullSampling, int minIndexInterval, int samplingLevel)
-
-
Method Detail
-
binarySearch
public int binarySearch(PartitionPosition key)
-
getPositionInSummary
public int getPositionInSummary(int index)
Gets the position of the actual index summary entry in our Memory attribute, 'bytes'.- Parameters:
index
- The index of the entry or key to get the position for- Returns:
- an offset into our Memory attribute where the actual entry resides
-
getKey
public byte[] getKey(int index)
-
addTo
public void addTo(Ref.IdentityCollection identities)
- Specified by:
addTo
in interfaceSharedCloseable
- Overrides:
addTo
in classSharedCloseableImpl
-
getPosition
public long getPosition(int index)
-
getEndInSummary
public long getEndInSummary(int index)
-
getMinIndexInterval
public int getMinIndexInterval()
-
getEffectiveIndexInterval
public double getEffectiveIndexInterval()
-
getEstimatedKeyCount
public long getEstimatedKeyCount()
Returns an estimate of the total number of keys in the SSTable.
-
size
public int size()
-
getSamplingLevel
public int getSamplingLevel()
-
getMaxNumberOfEntries
public int getMaxNumberOfEntries()
Returns the number of entries this summary would have if it were at the full sampling level, which is equal to the number of entries in the primary on-disk index divided by the min index interval.
-
getOffHeapSize
public long getOffHeapSize()
-
getEffectiveIndexIntervalAfterIndex
public int getEffectiveIndexIntervalAfterIndex(int index)
Returns the number of primary (on-disk) index entries between the index summary entry at `index` and the next index summary entry (assuming there is one). Without any downsampling, this will always be equivalent to the index interval.- Parameters:
index
- the index of an index summary entry (between zero and the index entry size)- Returns:
- the number of partitions after `index` until the next partition with a summary entry
-
getSampleIndexesForRanges
public java.util.List<SSTableReader.IndexesBounds> getSampleIndexesForRanges(java.util.Collection<Range<Token>> ranges)
-
getScanPosition
public long getScanPosition(PartitionPosition key)
-
getScanPositionFromBinarySearchResult
public long getScanPositionFromBinarySearchResult(int binarySearchResult)
-
getIndexFromBinarySearchResult
public static int getIndexFromBinarySearchResult(int binarySearchResult)
-
sharedCopy
public IndexSummary sharedCopy()
- Returns:
- a new instance of the object representing the same state and backed by the same underlying resources. Coordinates with the original (and other instances) when the underlying resource should be closed. Throws an exception if the shared resource has already been closed.
-
-