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

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

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

Блок

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

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

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

Режим None

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