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

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

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

подсказка

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

Режимы

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

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

nameratioencodingdecoding
zstd 1.4.5 -12.8500 MB/s1660 MB/s
lz4 1.9.22.1740 MB/s4530 MB/s

Блок

fieldtypedescription
checksumuint128Хеш (заголовок + сжатые данные)
raw_sizeuint32Размер без заголовка
data_sizeuint32Размер не сжатых данных
modebyteРежим сжатия
compressed_databinaryБлок сжатых данных

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

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

Режим None

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