nodetool compact

Forces a major compaction on one or more tables or user-defined compaction on given SSTables.

Major compactions may behave differently depending which compaction strategy is used for the affected tables.

A major compaction incurs considerably more disk I/O than minor compactions.

Synopsis

nodetool [<connection_options>] compact
[-et <end_token>] [-s] [-st <start_token>] [--user-defined]
[--] [<keyspace> <tables> [<tables> ...] | <sstable_name> ...]

Definition

If a parameter has multiple forms, the following reference provides both the short form and long form, separated by a comma.

Connection options

-h, --host hostname

The hostname or IP address of a remote node or nodes. When omitted, the default is the local machine.

-p, --port jmx_port

The JMX port number.

-pw, --password jmxpassword

The JMX password for authenticating with secure JMX. If a password is not provided, you are prompted to enter one.

-pwf, --password-file jmx_password_filepath

The filepath to the file that stores JMX authentication credentials.

-u, --username jmx_username

The username for authenticating with secure JMX.

Command arguments

--

Separates an option from an argument that could be mistaken for an option.

-et, --end-token end_token

The token at which the range ends. Requires start token (-st).

keyspace_name

The keyspace name.

-s, --split-output

Do not create a single large file. Split output when using SizeTieredCompactionStrategy (STCS) to files that are 50%-25%-12.5% and so on of the total size. Ignored for DTCS.

nodetool compact -s only accepts keyspace table as an option. The command only works for the entire set of files in the table directory.

compact -s cannot be run on single sstable files; it can only be run on entire tables.

When you compact a table with indexes, HCD does not automatically compact the index SSTables.

To remove tombstones from a table’s indexes, run the following:

nodetool compact -s KEYSPACE_NAME TABLE_NAME.INDEX_NAME

Replace the following:

  • KEYSPACE_NAME: The name of the keyspace

  • TABLE_NAME: The name of the table

  • INDEX_NAME: The name of the index

After running nodetool rebuild_index, old index files remain alongside new index files. Run the following to remove the old files and complete the cleanup:

nodetool compact -s KEYSPACE_NAME TABLE_NAME.INDEX_NAME

Replace the following:

  • KEYSPACE_NAME: The name of the keyspace

  • TABLE_NAME: The name of the table

  • INDEX_NAME: The name of the index

sstable_name

The name of the SSTable file. Specify <sstable_name> or <sstable_directory>.

-st, --start-token start_token

The token at which the range starts. Requires end token (-et).

table_name

The table name.

--user-defined

Submits listed files for user-defined compaction.

Was this helpful?

Give Feedback

How can we improve the documentation?

© Copyright IBM Corporation 2025 | Privacy policy | Terms of use Manage Privacy Choices

Apache, Apache Cassandra, Cassandra, Apache Tomcat, Tomcat, Apache Lucene, Apache Solr, Apache Hadoop, Hadoop, Apache Pulsar, Pulsar, Apache Spark, Spark, Apache TinkerPop, TinkerPop, Apache Kafka and Kafka are either registered trademarks or trademarks of the Apache Software Foundation or its subsidiaries in Canada, the United States and/or other countries. Kubernetes is the registered trademark of the Linux Foundation.

General Inquiries: Contact IBM