Compression subproperties
Configuring compression for a table.
Using CQL, you can configure compression for a table by constructing a map of the compaction property and the following subproperties:
Compression Subproperties | Default | Description |
---|---|---|
sstable_compression | SnappyCompressor | The compression algorithm to use. Valid values are LZ4Compressor, SnappyCompressor, and DeflateCompressor. See sstable_compressionbelow. |
chunk_length_kb | 64KB | On disk, SSTables are compressed by block to allow random reads. This subproperty of compression defines the size (in KB) of the block. Values larger than the default value might improve the compression rate, but increases the minimum size of data to be read from disk when a read occurs. The default value is a good middle-ground for compressing tables. Adjust compression size to account for read/write access patterns (how much data is typically requested at once) and the average size of rows in the table. |
crc_check_chance | 1.0 | When compression is enabled, each compressed block includes a checksum of that block for the purpose of detecting disk bitrot and avoiding the propagation of corruption to other replica. This option defines the probability with which those checksums are checked during read. By default they are always checked. Set to 0 to disable checksum checking and to 0.5, for instance, to check them on every other read. |
sstable_compression
The compression algorithm to use. Valid values are LZ4Compressor
SnappyCompressor, and DeflateCompressor. Use an empty
string ('') to disable
compression:
ALTER TABLE mytable WITH COMPRESSION = {'sstable_compression': ''};
Choosing
the right compressor depends on your requirements for space savings over read performance. LZ4
is fastest to decompress, followed by Snappy, then by Deflate. Compression effectiveness is
inversely correlated with decompression speed. The extra compression from Deflate or Snappy is
not enough to make up for the decreased performance for general-purpose workloads, but for
archival data they may be worth considering. Developers can also implement custom compression
classes using the org.apache.cassandra.io.compress.ICompressor interface.
Specify the full class name as a "string constant".