mirror of https://github.com/apache/cassandra
ninja: revert count output and changed fields in SSTableMetadataViewer
this patch also fixes incorrect visualisation of SSTable min/max local deletion time when no tombstones are present in a SSTable patch by Stefan Miklosovic; reviewed by Marcus Eriksson and Brandon Williams for CASSANDRA-18639
This commit is contained in:
parent
c5ebc2243c
commit
e27ba0ea34
|
|
@ -40,11 +40,11 @@ $ sstablemetadata /var/lib/cassandra/data/keyspace1/standard1-f6845640a6cb11e8b6
|
||||||
SSTable: /var/lib/cassandra/data/keyspace1/standard1-f6845640a6cb11e8b6836d2c86545d91/mc-1-big
|
SSTable: /var/lib/cassandra/data/keyspace1/standard1-f6845640a6cb11e8b6836d2c86545d91/mc-1-big
|
||||||
Partitioner: org.apache.cassandra.dht.Murmur3Partitioner
|
Partitioner: org.apache.cassandra.dht.Murmur3Partitioner
|
||||||
Bloom Filter FP chance: 0.010000
|
Bloom Filter FP chance: 0.010000
|
||||||
Minimum timestamp: 06/28/2023 15:15:04 (1687979704767589)
|
Minimum timestamp: 07/08/2023 09:11:52 (1688800312685792)
|
||||||
Maximum timestamp: 06/28/2023 15:15:09 (1687979709601420)
|
Maximum timestamp: 07/08/2023 09:12:03 (1688800323542149)
|
||||||
Duration: Days: 0 Hours: 0 Minutes: 0 Seconds: 4
|
Duration: Days: 0 Hours: 0 Minutes: 0 Seconds: 10
|
||||||
SSTable min local deletion time: 08/17/292278994 02:12:55 (9223372036854775807)
|
SSTable min local deletion time: 07/08/2023 09:11:52 (1688800312)
|
||||||
SSTable max local deletion time: 08/17/292278994 02:12:55 (9223372036854775807)
|
SSTable max local deletion time: 07/08/2023 09:12:03 (1688800323)
|
||||||
Compressor: org.apache.cassandra.io.compress.LZ4Compressor
|
Compressor: org.apache.cassandra.io.compress.LZ4Compressor
|
||||||
Compression ratio: 0.553999337227618
|
Compression ratio: 0.553999337227618
|
||||||
TTL min: 86400
|
TTL min: 86400
|
||||||
|
|
@ -263,6 +263,32 @@ $ sstablemetadata --gc_grace_seconds 5000 /var/lib/cassandra/data/keyspace1/stan
|
||||||
Estimated droppable tombstones: 0.0
|
Estimated droppable tombstones: 0.0
|
||||||
....
|
....
|
||||||
|
|
||||||
|
== Scanning of a table
|
||||||
|
|
||||||
|
It is possible to specify `--scan` option to get additional statistics about a table which might be time-consuming.
|
||||||
|
|
||||||
|
Example
|
||||||
|
|
||||||
|
....
|
||||||
|
sstablemetadata -s /var/lib/cassandra/data/data/ks/tb-dbead8501c9511ee805bb3deafc4499b/nc-1-big-Data.db
|
||||||
|
....
|
||||||
|
|
||||||
|
This gives you statistics such as:
|
||||||
|
|
||||||
|
....
|
||||||
|
Size: 120
|
||||||
|
Partitions: 2
|
||||||
|
Rows: 5
|
||||||
|
Tombstones: 0
|
||||||
|
Cells: 5
|
||||||
|
Widest Partitions:
|
||||||
|
[2] 3
|
||||||
|
[1] 2
|
||||||
|
Largest Partitions:
|
||||||
|
[2] 147 (147 B)
|
||||||
|
[1] 98 (98 B)
|
||||||
|
....
|
||||||
|
|
||||||
== Explanation of each value printed above
|
== Explanation of each value printed above
|
||||||
|
|
||||||
|===
|
|===
|
||||||
|
|
@ -279,8 +305,7 @@ timestamp of any entry in this sstable, in epoch microseconds
|
||||||
|Maximum
|
|Maximum
|
||||||
timestamp |maximum timestamp of any entry in this sstable, in epoch
|
timestamp |maximum timestamp of any entry in this sstable, in epoch
|
||||||
microseconds
|
microseconds
|
||||||
|Duration |Difference between Maximum timestamp
|
|Duration |Difference between Maximum timestamp and Minimum timestamp
|
||||||
and Minimum timestamp
|
|
||||||
|SSTable min local deletion time |minimum timestamp of
|
|SSTable min local deletion time |minimum timestamp of
|
||||||
deletion date, based on TTL, in epoch seconds
|
deletion date, based on TTL, in epoch seconds
|
||||||
|SSTable max local deletion
|
|SSTable max local deletion
|
||||||
|
|
@ -302,10 +327,9 @@ sstable, if leveled compaction (LCS) is used
|
||||||
this sstable was marked as repaired via sstablerepairedset, in epoch
|
this sstable was marked as repaired via sstablerepairedset, in epoch
|
||||||
milliseconds
|
milliseconds
|
||||||
|Replay positions covered |the interval of time and commitlog
|
|Replay positions covered |the interval of time and commitlog
|
||||||
positions related to this sstable
|
positions related to this sstable
|
||||||
|Total Columns Cells |number of cells in the table
|
|totalColumnsSet |number of cells in the table
|
||||||
|Total Rows |number of rows in the table
|
|totalRows |number of rows in the table
|
||||||
|Total Partitions |total number of partitions
|
|
||||||
|Estimated tombstone drop
|
|Estimated tombstone drop
|
||||||
times |approximate number of rows that will expire, ordered by epoch
|
times |approximate number of rows that will expire, ordered by epoch
|
||||||
seconds
|
seconds
|
||||||
|
|
|
||||||
|
|
@ -71,8 +71,6 @@ import static org.apache.cassandra.tools.Util.WHITE;
|
||||||
import static org.apache.cassandra.utils.Clock.Global.currentTimeMillis;
|
import static org.apache.cassandra.utils.Clock.Global.currentTimeMillis;
|
||||||
import static org.apache.commons.lang3.time.DurationFormatUtils.formatDurationWords;
|
import static org.apache.commons.lang3.time.DurationFormatUtils.formatDurationWords;
|
||||||
|
|
||||||
import org.apache.cassandra.io.sstable.KeyIterator;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Shows the contents of sstable metadata
|
* Shows the contents of sstable metadata
|
||||||
*/
|
*/
|
||||||
|
|
@ -115,7 +113,7 @@ public class SSTableMetadataViewer
|
||||||
|
|
||||||
public static String deletion(long time)
|
public static String deletion(long time)
|
||||||
{
|
{
|
||||||
if (time == 0 || time == Integer.MAX_VALUE)
|
if (time == 0 || time == Long.MAX_VALUE)
|
||||||
{
|
{
|
||||||
return "no tombstones";
|
return "no tombstones";
|
||||||
}
|
}
|
||||||
|
|
@ -323,20 +321,6 @@ public class SSTableMetadataViewer
|
||||||
CompactionMetadata compaction = statsComponent.compactionMetadata();
|
CompactionMetadata compaction = statsComponent.compactionMetadata();
|
||||||
SerializationHeader.Component header = statsComponent.serializationHeader();
|
SerializationHeader.Component header = statsComponent.serializationHeader();
|
||||||
Class<? extends ICompressor> compressorClass = null;
|
Class<? extends ICompressor> compressorClass = null;
|
||||||
|
|
||||||
TableMetadata metadata = Util.metadataFromSSTable(descriptor);
|
|
||||||
SSTableReader sstable = SSTableReader.openNoValidation(null, descriptor, TableMetadataRef.forOfflineTools(metadata));
|
|
||||||
int count = 0;
|
|
||||||
|
|
||||||
try (KeyIterator iter = sstable.keyIterator())
|
|
||||||
{
|
|
||||||
while (iter.hasNext())
|
|
||||||
{
|
|
||||||
iter.next();
|
|
||||||
count += 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
try (CompressionMetadata compression = CompressionInfoComponent.loadIfExists(descriptor))
|
try (CompressionMetadata compression = CompressionInfoComponent.loadIfExists(descriptor))
|
||||||
{
|
{
|
||||||
compressorClass = compression != null ? compression.compressor().getClass() : null;
|
compressorClass = compression != null ? compression.compressor().getClass() : null;
|
||||||
|
|
@ -381,8 +365,8 @@ public class SSTableMetadataViewer
|
||||||
field("Originating host id", stats.originatingHostId);
|
field("Originating host id", stats.originatingHostId);
|
||||||
field("Pending repair", stats.pendingRepair);
|
field("Pending repair", stats.pendingRepair);
|
||||||
field("Replay positions covered", stats.commitLogIntervals);
|
field("Replay positions covered", stats.commitLogIntervals);
|
||||||
field("Total Column Cells", stats.totalColumnsSet);
|
field("totalColumnsSet", stats.totalColumnsSet);
|
||||||
field("Total Rows", stats.totalRows);
|
field("totalRows", stats.totalRows);
|
||||||
field("Estimated tombstone drop times", "");
|
field("Estimated tombstone drop times", "");
|
||||||
|
|
||||||
TermHistogram estDropped = new TermHistogram(stats.estimatedTombstoneDropTime,
|
TermHistogram estDropped = new TermHistogram(stats.estimatedTombstoneDropTime,
|
||||||
|
|
@ -394,7 +378,6 @@ public class SSTableMetadataViewer
|
||||||
String::valueOf);
|
String::valueOf);
|
||||||
estDropped.printHistogram(out, color, unicode);
|
estDropped.printHistogram(out, color, unicode);
|
||||||
field("Partition Size", "");
|
field("Partition Size", "");
|
||||||
field("Total Partitions", count);
|
|
||||||
TermHistogram rowSize = new TermHistogram(stats.estimatedPartitionSize,
|
TermHistogram rowSize = new TermHistogram(stats.estimatedPartitionSize,
|
||||||
"Size (bytes)",
|
"Size (bytes)",
|
||||||
offset -> String.format("%d %s",
|
offset -> String.format("%d %s",
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue