sstablepartitions
Identifies large partitions of SSTables and outputs the partition size in bytes, row count, cell count, and tombstone count.
You can supply any number of sstables file paths, or directories containing sstables. Each sstable will be analyzed separately.
If a metrics threshold such as --min-size
, --min-rows
, --min-cells
or --min-tombstones
is provided,
then the partition keys exceeding of the threshold will be printed in the output.
It also prints a summary of metrics for the table. The percentiles in the metrics are estimates,
while the min/max/count metrics are accurate.
The default output of this tool is meant to be read by human eyes.
Future versions might include small formatting changes or present new data that can fool scripts reading it.
Scripts or other automatic tools should use the --csv
flag to produce machine-readable output.
Future versions will not change the format of the CSV output except for maybe adding new columns,
so a proper CSV parser consuming the output should keep working.
Cassandra doesn’t need to be running before this tool is executed.
Usage
sstablepartitions <options> <sstable files or directories>
-t, --min-size <arg> |
Partition size threshold, expressed as either the number of bytes or a size with unit of the form 10KiB, 20MiB, 30GiB, etc. |
-w, --min-rows <arg> |
Partition row count threshold. |
-c, --min-cells <arg> |
Partition cell count threshold |
-o, --min-tombstones <arg> |
Partition tombstone count threshold. |
-k, --key <arg> |
Partition keys to include, instead of scanning all partitions. |
-x, --exclude-key <arg> |
Partition keys to exclude. |
-r, --recursive |
Scan for sstables recursively |
-b, --backups |
Include backups present in data directories when scanning directories |
-s, --snaphsots |
Include snapshots present in data directories when scanning directories |
-u, --current-timestamp <arg> |
Timestamp (seconds since epoch, unit time) for TTL expired calculation. |
-y, --partitions-only |
Only brief partition information. Exclude per-partition detailed row/cell/tombstone information from process and output. |
-m, --csv |
Produced CSV output (machine readable) |
Examples
Analyze partition statistics for a single SSTable
Use the path to the SSTable file as the only argument.
Example:
sstablepartitions data/data/k/t-d7be5e90e90111ed8b54efe3c39cb0bb/oa-8-big-Data.db Processing k.t-d7be5e90e90111ed8b54efe3c39cb0bb #8 (big-oa) (1.368 GiB uncompressed, 534.979 MiB on disk) Partition size Row count Cell count Tombstone count ~p50 767.519 KiB 770 1916 0 ~p75 2.238 MiB 2299 5722 0 ~p90 3.867 MiB 3311 9887 50 ~p95 16.629 MiB 14237 42510 446 ~p99 148.267 MiB 126934 379022 1331 ~p999 368.936 MiB 315852 943127 2759 min 56.854 KiB 100 150 0 max 356.067 MiB 310706 932118 2450 count 210
Analyze partition statistics for all SSTables in a directory
Use the path to the SSTables directory as the only argument.
Example:
sstablepartitions data/data/k/t-d7be5e90e90111ed8b54efe3c39cb0bb Processing k.t-d7be5e90e90111ed8b54efe3c39cb0bb #8 (big-oa) (1.368 GiB uncompressed, 534.979 MiB on disk) Partition size Row count Cell count Tombstone count ~p50 767.519 KiB 770 1916 0 ~p75 2.238 MiB 2299 5722 0 ~p90 3.867 MiB 3311 9887 50 ~p95 16.629 MiB 14237 42510 446 ~p99 148.267 MiB 126934 379022 1331 ~p999 368.936 MiB 315852 943127 2759 min 56.854 KiB 100 150 0 max 356.067 MiB 310706 932118 2450 count 210 Processing k.t-d7be5e90e90111ed8b54efe3c39cb0bb #9 (big-oa) (457.540 MiB uncompressed, 174.880 MiB on disk) Partition size Row count Cell count Tombstone count ~p50 1.865 MiB 1597 4768 0 ~p75 13.858 MiB 14237 42510 0 ~p90 28.735 MiB 29521 73457 50 ~p95 34.482 MiB 29521 88148 8239 ~p99 49.654 MiB 42510 126934 14237 ~p999 49.654 MiB 42510 126934 14237 min 47.272 KiB 100 150 0 max 45.133 MiB 39429 118287 13030 count 57
Output only partitions over 100MiB in size
Use the --min-size
option to specify the minimum size a partition must have to be included in the output.
Example:
sstablepartitions data/data/k/t-d7be5e90e90111ed8b54efe3c39cb0bb/oa-8-big-Data.db --min-size 100MiB Processing k.t-d7be5e90e90111ed8b54efe3c39cb0bb #8 (big-oa) (1.368 GiB uncompressed, 534.979 MiB on disk) Partition: '13' (0000000d) live, size: 105.056 MiB, rows: 91490, cells: 274470, tombstones: 50 (row:50, range:0, complex:0, cell:0, row-TTLd:0, cell-TTLd:0) Partition: '1' (00000001) live, size: 127.241 MiB, rows: 111065, cells: 333195, tombstones: 50 (row:50, range:0, complex:0, cell:0, row-TTLd:0, cell-TTLd:0) Partition: '8' (00000008) live, size: 356.067 MiB, rows: 310706, cells: 932118, tombstones: 0 (row:0, range:0, complex:0, cell:0, row-TTLd:0, cell-TTLd:0) Partition: '2' (00000002) live, size: 213.341 MiB, rows: 186582, cells: 559125, tombstones: 978 (row:978, range:0, complex:0, cell:0, row-TTLd:0, cell-TTLd:0) Summary of k.t-d7be5e90e90111ed8b54efe3c39cb0bb #8 (big-oa): File: /Users/adelapena/src/cassandra/trunk/data/data/k/t-d7be5e90e90111ed8b54efe3c39cb0bb/oa-8-big-Data.db 4 partitions match Keys: 13 1 8 2 Partition size Row count Cell count Tombstone count ~p50 767.519 KiB 770 1916 0 ~p75 2.238 MiB 2299 5722 0 ~p90 3.867 MiB 3311 9887 50 ~p95 16.629 MiB 14237 42510 446 ~p99 148.267 MiB 126934 379022 1331 ~p999 368.936 MiB 315852 943127 2759 min 56.854 KiB 100 150 0 max 356.067 MiB 310706 932118 2450 count 210
Output only partitions with more than 1000 tombstones
Use the --min-tombstones
option to specify the minimum number of tombstones a partition must have to be included in the output.
Example:
sstablepartitions data/data/k/t-d7be5e90e90111ed8b54efe3c39cb0bb/oa-8-big-Data.db --min-tombstones 1000 Processing k.t-d7be5e90e90111ed8b54efe3c39cb0bb #8 (big-oa) (1.368 GiB uncompressed, 534.979 MiB on disk) Partition: '55' (00000037) live, size: 1.290 MiB, rows: 2317, cells: 3474, tombstones: 1159 (row:1159, range:0, complex:0, cell:0, row-TTLd:0, cell-TTLd:0) Partition: '28' (0000001c) live, size: 1.198 MiB, rows: 2099, cells: 3147, tombstones: 1050 (row:1050, range:0, complex:0, cell:0, row-TTLd:0, cell-TTLd:0) Partition: '89' (00000059) live, size: 1.346 MiB, rows: 2226, cells: 3339, tombstones: 1113 (row:1113, range:0, complex:0, cell:0, row-TTLd:0, cell-TTLd:0) Partition: '21' (00000015) live, size: 3.853 MiB, rows: 4900, cells: 9927, tombstones: 2450 (row:2450, range:0, complex:0, cell:0, row-TTLd:0, cell-TTLd:0) Summary of k.t-d7be5e90e90111ed8b54efe3c39cb0bb #8 (big-oa): File: /Users/adelapena/src/cassandra/trunk/data/data/k/t-d7be5e90e90111ed8b54efe3c39cb0bb/oa-8-big-Data.db 4 partitions match Keys: 55 28 89 21 Partition size Row count Cell count Tombstone count ~p50 767.519 KiB 770 1916 0 ~p75 2.238 MiB 2299 5722 0 ~p90 3.867 MiB 3311 9887 50 ~p95 16.629 MiB 14237 42510 446 ~p99 148.267 MiB 126934 379022 1331 ~p999 368.936 MiB 315852 943127 2759 min 56.854 KiB 100 150 0 max 356.067 MiB 310706 932118 2450 count 210
Output CSV machine-readable output
Use the --csv
option to output a CSV machine-readable output, combined with any threshold value.
Example:
sstablepartitions data/data/k/t-d7be5e90e90111ed8b54efe3c39cb0bb/oa-8-big-Data.db --min-size 100MiB --csv key,keyBinary,live,offset,size,rowCount,cellCount,tombstoneCount,rowTombstoneCount,rangeTombstoneCount,complexTombstoneCount,cellTombstoneCount,rowTtlExpired,cellTtlExpired,directory,keyspace,table,index,snapshot,backup,generation,format,version "13",0000000d,true,186403543,110158965,91490,274470,50,50,0,0,0,0,0,/Users/adelapena/src/cassandra/trunk/data/data/k/t-d7be5e90e90111ed8b54efe3c39cb0bb/oa-8-big-Data.db,k,t,,,,8,big,oa "1",00000001,true,325141542,133422183,111065,333195,50,50,0,0,0,0,0,/Users/adelapena/src/cassandra/trunk/data/data/k/t-d7be5e90e90111ed8b54efe3c39cb0bb/oa-8-big-Data.db,k,t,,,,8,big,oa "8",00000008,true,477133752,373362819,310706,932118,0,0,0,0,0,0,0,/Users/adelapena/src/cassandra/trunk/data/data/k/t-d7be5e90e90111ed8b54efe3c39cb0bb/oa-8-big-Data.db,k,t,,,,8,big,oa "2",00000002,true,851841363,223704192,186582,559125,978,978,0,0,0,0,0,/Users/adelapena/src/cassandra/trunk/data/data/k/t-d7be5e90e90111ed8b54efe3c39cb0bb/oa-8-big-Data.db,k,t,,,,8,big,oa