.. Licensed to the Apache Software Foundation (ASF) under one
.. or more contributor license agreements.  See the NOTICE file
.. distributed with this work for additional information
.. regarding copyright ownership.  The ASF licenses this file
.. to you under the Apache License, Version 2.0 (the
.. "License"); you may not use this file except in compliance
.. with the License.  You may obtain a copy of the License at
..
..     http://www.apache.org/licenses/LICENSE-2.0
..
.. Unless required by applicable law or agreed to in writing, software
.. distributed under the License is distributed on an "AS IS" BASIS,
.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
.. See the License for the specific language governing permissions and
.. limitations under the License.

sstablemetadata
---------------

Print information about an sstable from the related Statistics.db and Summary.db files to standard output.

ref: https://issues.apache.org/jira/browse/CASSANDRA-7159 and https://issues.apache.org/jira/browse/CASSANDRA-10838

Cassandra must be stopped before this tool is executed, or unexpected results will occur. Note: the script does not verify that Cassandra is stopped.

Usage
^^^^^

sstablemetadata <options> <sstable filename(s)>

=========================        ================================================================================
--gc_grace_seconds <arg>         The gc_grace_seconds to use when calculating droppable tombstones
=========================        ================================================================================

Print all the metadata
^^^^^^^^^^^^^^^^^^^^^^

Run sstablemetadata against the *Data.db file(s) related to a table. If necessary, find the *Data.db file(s) using sstableutil.

Example::

    sstableutil keyspace1 standard1 | grep Data
    /var/lib/cassandra/data/keyspace1/standard1-f6845640a6cb11e8b6836d2c86545d91/mc-1-big-Data.db

    sstablemetadata /var/lib/cassandra/data/keyspace1/standard1-f6845640a6cb11e8b6836d2c86545d91/mc-1-big-Data.db

    SSTable: /var/lib/cassandra/data/keyspace1/standard1-f6845640a6cb11e8b6836d2c86545d91/mc-1-big
    Partitioner: org.apache.cassandra.dht.Murmur3Partitioner
    Bloom Filter FP chance: 0.010000
    Minimum timestamp: 1535025576141000
    Maximum timestamp: 1535025604309000
    SSTable min local deletion time: 2147483647
    SSTable max local deletion time: 2147483647
    Compressor: org.apache.cassandra.io.compress.LZ4Compressor
    TTL min: 86400
    TTL max: 86400
    First token: -9223004712949498654 (key=39373333373831303130)
    Last token: 9222554117157811897 (key=4f3438394e39374d3730)
    Estimated droppable tombstones: 0.9188263888888889
    SSTable Level: 0
    Repaired at: 0
    Replay positions covered: {CommitLogPosition(segmentId=1535025390651, position=226400)=CommitLogPosition(segmentId=1535025390651, position=6849139)}
    totalColumnsSet: 100000
    totalRows: 20000
    Estimated tombstone drop times:
    1535039100:     80390
    1535039160:      5645
    1535039220:     13965
    Count               Row Size        Cell Count
    1                          0                 0
    2                          0                 0
    3                          0                 0
    4                          0                 0
    5                          0             20000
    6                          0                 0
    7                          0                 0
    8                          0                 0
    10                         0                 0
    12                         0                 0
    14                         0                 0
    17                         0                 0
    20                         0                 0
    24                         0                 0
    29                         0                 0
    35                         0                 0
    42                         0                 0
    50                         0                 0
    60                         0                 0
    72                         0                 0
    86                         0                 0
    103                        0                 0
    124                        0                 0
    149                        0                 0
    179                        0                 0
    215                        0                 0
    258                    20000                 0
    310                        0                 0
    372                        0                 0
    446                        0                 0
    535                        0                 0
    642                        0                 0
    770                        0                 0
    924                        0                 0
    1109                       0                 0
    1331                       0                 0
    1597                       0                 0
    1916                       0                 0
    2299                       0                 0
    2759                       0                 0
    3311                       0                 0
    3973                       0                 0
    4768                       0                 0
    5722                       0                 0
    6866                       0                 0
    8239                       0                 0
    9887                       0                 0
    11864                      0                 0
    14237                      0                 0
    17084                      0                 0
    20501                      0                 0
    24601                      0                 0
    29521                      0                 0
    35425                      0                 0
    42510                      0                 0
    51012                      0                 0
    61214                      0                 0
    73457                      0                 0
    88148                      0                 0
    105778                     0                 0
    126934                     0                 0
    152321                     0                 0
    182785                     0                 0
    219342                     0                 0
    263210                     0                 0
    315852                     0                 0
    379022                     0                 0
    454826                     0                 0
    545791                     0                 0
    654949                     0                 0
    785939                     0                 0
    943127                     0                 0
    1131752                    0                 0
    1358102                    0                 0
    1629722                    0                 0
    1955666                    0                 0
    2346799                    0                 0
    2816159                    0                 0
    3379391                    0                 0
    4055269                    0                 0
    4866323                    0                 0
    5839588                    0                 0
    7007506                    0                 0
    8409007                    0                 0
    10090808                   0                 0
    12108970                   0                 0
    14530764                   0                 0
    17436917                   0                 0
    20924300                   0                 0
    25109160                   0                 0
    30130992                   0                 0
    36157190                   0                 0
    43388628                   0                 0
    52066354                   0                 0
    62479625                   0                 0
    74975550                   0                 0
    89970660                   0                 0
    107964792                  0                 0
    129557750                  0                 0
    155469300                  0                 0
    186563160                  0                 0
    223875792                  0                 0
    268650950                  0                 0
    322381140                  0                 0
    386857368                  0                 0
    464228842                  0                 0
    557074610                  0                 0
    668489532                  0                 0
    802187438                  0                 0
    962624926                  0                 0
    1155149911                 0                 0
    1386179893                 0                 0
    1663415872                 0                 0
    1996099046                 0                 0
    2395318855                 0                 0
    2874382626                 0
    3449259151                 0
    4139110981                 0
    4966933177                 0
    5960319812                 0
    7152383774                 0
    8582860529                 0
    10299432635                 0
    12359319162                 0
    14831182994                 0
    17797419593                 0
    21356903512                 0
    25628284214                 0
    30753941057                 0
    36904729268                 0
    44285675122                 0
    53142810146                 0
    63771372175                 0
    76525646610                 0
    91830775932                 0
    110196931118                 0
    132236317342                 0
    158683580810                 0
    190420296972                 0
    228504356366                 0
    274205227639                 0
    329046273167                 0
    394855527800                 0
    473826633360                 0
    568591960032                 0
    682310352038                 0
    818772422446                 0
    982526906935                 0
    1179032288322                 0
    1414838745986                 0
    Estimated cardinality: 20196
    EncodingStats minTTL: 0
    EncodingStats minLocalDeletionTime: 1442880000
    EncodingStats minTimestamp: 1535025565275000
    KeyType: org.apache.cassandra.db.marshal.BytesType
    ClusteringTypes: [org.apache.cassandra.db.marshal.UTF8Type]
    StaticColumns: {C3:org.apache.cassandra.db.marshal.BytesType, C4:org.apache.cassandra.db.marshal.BytesType, C0:org.apache.cassandra.db.marshal.BytesType, C1:org.apache.cassandra.db.marshal.BytesType, C2:org.apache.cassandra.db.marshal.BytesType}
    RegularColumns: {}

Specify gc grace seconds
^^^^^^^^^^^^^^^^^^^^^^^^

To see the ratio of droppable tombstones given a configured gc grace seconds, use the gc_grace_seconds option. Because the sstablemetadata tool doesn't access the schema directly, this is a way to more accurately estimate droppable tombstones -- for example, if you pass in gc_grace_seconds matching what is configured in the schema. The gc_grace_seconds value provided is subtracted from the curent machine time (in seconds). 

ref: https://issues.apache.org/jira/browse/CASSANDRA-12208

Example::

    sstablemetadata /var/lib/cassandra/data/keyspace1/standard1-41b52700b4ed11e896476d2c86545d91/mc-12-big-Data.db | grep "Estimated tombstone drop times" -A4
    Estimated tombstone drop times:
    1536599100:         1
    1536599640:         1
    1536599700:         2

    echo $(date +%s)
    1536602005

    # if gc_grace_seconds was configured at 100, all of the tombstones would be currently droppable 
    sstablemetadata --gc_grace_seconds 100 /var/lib/cassandra/data/keyspace1/standard1-41b52700b4ed11e896476d2c86545d91/mc-12-big-Data.db | grep "Estimated droppable tombstones"
    Estimated droppable tombstones: 4.0E-5

    # if gc_grace_seconds was configured at 4700, some of the tombstones would be currently droppable 
    sstablemetadata --gc_grace_seconds 4700 /var/lib/cassandra/data/keyspace1/standard1-41b52700b4ed11e896476d2c86545d91/mc-12-big-Data.db | grep "Estimated droppable tombstones"
    Estimated droppable tombstones: 9.61111111111111E-6

    # if gc_grace_seconds was configured at 100, none of the tombstones would be currently droppable 
    sstablemetadata --gc_grace_seconds 5000 /var/lib/cassandra/data/keyspace1/standard1-41b52700b4ed11e896476d2c86545d91/mc-12-big-Data.db | grep "Estimated droppable tombstones"
    Estimated droppable tombstones: 0.0

Explanation of each value printed above
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

===================================  ================================================================================
   Value                             Explanation
===================================  ================================================================================
SSTable                              prefix of the sstable filenames related to this sstable
Partitioner                          partitioner type used to distribute data across nodes; defined in cassandra.yaml  
Bloom Filter FP                      precision of Bloom filter used in reads; defined in the table definition   
Minimum timestamp                    minimum timestamp of any entry in this sstable, in epoch microseconds  
Maximum timestamp                    maximum timestamp of any entry in this sstable, in epoch microseconds
SSTable min local deletion time      minimum timestamp of deletion date, based on TTL, in epoch seconds
SSTable max local deletion time      maximum timestamp of deletion date, based on TTL, in epoch seconds
Compressor                           blank (-) by default; if not blank, indicates type of compression enabled on the table
TTL min                              time-to-live in seconds; default 0 unless defined in the table definition
TTL max                              time-to-live in seconds; default 0 unless defined in the table definition
First token                          lowest token and related key found in the sstable summary
Last token                           highest token and related key found in the sstable summary
Estimated droppable tombstones       ratio of tombstones to columns, using configured gc grace seconds if relevant
SSTable level                        compaction level of this sstable, if leveled compaction (LCS) is used
Repaired at                          the timestamp this sstable was marked as repaired via sstablerepairedset, in epoch milliseconds
Replay positions covered             the interval of time and commitlog positions related to this sstable
totalColumnsSet                      number of cells in the table
totalRows                            number of rows in the table
Estimated tombstone drop times       approximate number of rows that will expire, ordered by epoch seconds
Count  Row Size  Cell Count          two histograms in two columns; one represents distribution of Row Size 
                                     and the other represents distribution of Cell Count
Estimated cardinality                an estimate of unique values, used for compaction
EncodingStats* minTTL                in epoch milliseconds
EncodingStats* minLocalDeletionTime  in epoch seconds
EncodingStats* minTimestamp          in epoch microseconds
KeyType                              the type of partition key, useful in reading and writing data 
                                     from/to storage; defined in the table definition
ClusteringTypes                      the type of clustering key, useful in reading and writing data 
                                     from/to storage; defined in the table definition
StaticColumns                        a list of the shared columns in the table
RegularColumns                       a list of non-static, non-key columns in the table
===================================  ================================================================================
* For the encoding stats values, the delta of this and the current epoch time is used when encoding and storing data in the most optimal way.



