Перейти к основному содержимому
Перейти к основному содержимому

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

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

подсказка

Узнайте больше о кодеках сжатия колонок, доступных для указания при создании таблиц или позже.

Режимы

значениеимяописание
0x02NoneБез сжатия, только контрольные суммы
0x82LZ4Очень быстро, хорошее сжатие
0x90ZSTDZstandard, довольно быстро, лучшее сжатие

Оба LZ4 и ZSTD разработаны одним автором, но с разными компромиссами.
Из бенчмарков Facebook:

имясоотношениекодированиедекодирование
zstd 1.4.5 -12.8500 MB/s1660 MB/s
lz4 1.9.22.1740 MB/s4530 MB/s

Блок

полетипописание
checksumuint128Хэш от (заголовок + сжатые данные)
raw_sizeuint32Размер без заголовка
data_sizeuint32Размер несжатых данных
modebyteРежим сжатия
compressed_databinaryБлок сжатых данных
Диаграмма, иллюстрирующая структуру блока сжатия ClickHouse

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

Контрольная сумма — это hash(header + compressed_data), используя ClickHouse CityHash.

Режим None

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