Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Modos de compressão

O protocolo do ClickHouse oferece suporte à compressão de blocos de dados com checksum. Use LZ4 se não tiver certeza de qual modo escolher. ``

Modos

valor nome descrição
0x02 None Sem compressão, apenas checksums
0x82 LZ4 Extremamente rápido, boa compressão
0x90 ZSTD Zstandard, bastante rápido, melhor compressão

Tanto o LZ4 quanto o ZSTD foram criados pelo mesmo autor, mas com trade-offs diferentes. Segundo benchmarks do Facebook:

nome taxa codificação decodificação
zstd 1.4.5 -1 2.8 500 MB/s 1660 MB/s
lz4 1.9.2 2.1 740 MB/s 4530 MB/s

Bloco

campo tipo descrição
checksum uint128 Hash de (cabeçalho + dados comprimidos)
raw_size uint32 Tamanho bruto sem o cabeçalho
data_size uint32 Tamanho dos dados descompactados
mode byte Modo de compressão
compressed_data binary Bloco de dados comprimidos
Diagrama que ilustra a estrutura do bloco de compressão do ClickHouse

O cabeçalho é (raw_size + data_size + mode), e o tamanho bruto consiste em len(header + compressed_data).

O checksum é hash(header + compressed_data), usando ClickHouse CityHash.

Modo None

Se o modo None for usado, compressed_data será igual aos dados originais. O modo sem compressão é útil para garantir uma camada adicional de integridade dos dados com checksums, porque a sobrecarga do cálculo de hash é desprezível.

Navigation