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

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

Протокол 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

Блок

полетипописание
контрольная суммаuint128Хэш (заголовок + сжатые данные)
raw_sizeuint32Исходный размер без заголовка
data_sizeuint32Размер несжатых данных
режимbyteРежим сжатия
compressed_databinaryБлок сжатых данных

Заголовок состоит из (raw_size + data_size + режим), raw size включает в себя len(заголовок + сжатые данные).

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

Режим None

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