Режимы сжатия
Протокол 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 | 
Блок
| поле | тип | описание | 
|---|---|---|
| контрольная сумма | uint128 | Хэш (заголовок + сжатые данные) | 
| raw_size | uint32 | Исходный размер без заголовка | 
| data_size | uint32 | Размер несжатых данных | 
| режим | byte | Режим сжатия | 
| compressed_data | binary | Блок сжатых данных | 
 
Заголовок состоит из (raw_size + data_size + режим), raw size включает в себя len(заголовок + сжатые данные).
Контрольная сумма рассчитывается как hash(заголовок + сжатые данные), с использованием ClickHouse CityHash.
Режим None
Если используется режим None, compressed_data равно оригинальным данным.
Режим без сжатия полезен для обеспечения дополнительной целостности данных с контрольными суммами, поскольку накладные расходы на хеширование незначительны.
