Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Режимы сжатия

Протокол ClickHouse поддерживает сжатие блоков данных с контрольными суммами. Если не уверены, какой режим выбрать, используйте LZ4. ``

Режимы

значение имя описание
0x02 None Без сжатия, только контрольные суммы
0x82 LZ4 Очень быстрый, хорошее сжатие
0x90 ZSTD Zstandard, довольно быстрый, лучшее сжатие

И LZ4, и ZSTD созданы одним и тем же автором, но с разными компромиссами.

Из бенчмарков Facebook:

имя коэффициент кодирование декодирование
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

Блок

поле тип описание
checksum uint128 Хэш от (header + compressed data)
raw_size uint32 Исходный размер без заголовка
data_size uint32 Размер несжатых данных
mode byte Режим сжатия
compressed_data binary Блок сжатых данных
Диаграмма, иллюстрирующая структуру блока сжатия ClickHouse

Заголовок имеет вид (raw_size + data_size + mode), а raw_size равен len(header + compressed_data).

Контрольная сумма вычисляется как hash(header + compressed_data) с использованием ClickHouse CityHash.

Режим None

Если используется режим None, compressed_data совпадает с исходными данными. Режим без сжатия полезен для обеспечения дополнительной целостности данных с помощью контрольных сумм, поскольку накладные расходы на хеширование пренебрежимо малы.

Navigation