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:
-
SizeTieredCompactionStrategy (STCS)(default): This strategy triggers a minor compaction when there are a number of similar sized SSTables on disk as configured by the table subpropertymin_threshold. A minor compaction doesn’t involve all the tables in a keyspace. For more information, see STCS compaction subproperties. -
DateTieredCompactionStrategy (DTCS)(deprecated). -
TimeWindowCompactionStrategy (TWCS): This strategy is an alternative for time series data. TWCS compacts SSTables using a series of time windows. During a time window, TWCS compacts all SSTables flushed from memory into larger SSTables using STCS. At the end of the time window, all of these SSTables are compacted into a single SSTable. Then, the next time window starts and the process repeats. The duration of the time window is the only required setting. For more information, see TWCS compaction subproperties and How is data maintained?. -
LeveledCompactionStrategy (LCS): The leveled compaction strategy creates SSTables of a fixed, relatively small size (160 MB by default) that are grouped into levels. Within each level, SSTables are guaranteed to be non-overlapping. Each level (L0, L1, L2 and so on) is 10 times as large as the previous. Disk I/O is more uniform and predictable on higher than on lower levels as SSTables are continuously being compacted into progressively larger levels. At each level, row keys are merged into non-overlapping SSTables in the next level. This process can improve performance for reads, because the database can determine which SSTables in each level to check for the existence of row key data. This compaction strategy is modeled after Google’s LevelDB implementation. Also see LCS compaction subproperties.
|
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> ...]
Syntax legend
| Syntax conventions | Description |
|---|---|
Italic, bold, or |
Syntax diagrams and code samples use one or more of these styles to mark placeholders for variable values. Replace placeholders with a valid option or your own user-defined value. In CQL statements, angle brackets are required to enclose data types in a set, list, map, or tuple.
Separate the data types with a comma.
For example: In Search CQL statements, angle brackets are used to identify the entity and literal value to overwrite the XML element in the schema and |
|
Square brackets surround optional command arguments. Do not type the square brackets. |
|
Parentheses identify a group to choose from. Do not type the parentheses. |
|
A pipe separates alternative elements. Type any one of the elements. Do not type the pipe. |
|
Indicates that you can repeat the syntax element as often as required. |
|
Single quotation marks must surround literal strings in CQL statements.
Use single quotation marks to preserve upper case.
+
For Search CQL only: Single quotation marks surround an entire XML schema declaration, such as |
|
Map collection.
Curly braces enclose maps ( |
|
Ends a CQL statement. |
|
Separate command line options from command arguments with two hyphens. This syntax is useful when arguments might be mistaken for command line options. |
Options
If an option has a short and long form, both forms are given, separated by a comma.
- -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.
- -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. Instead, 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 -sonly acceptskeyspace tableas an option. The command only works for the entire set of files in the table directory.compact -scannot be run on single sstable files; it can only be run on entire tables. - 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.