Le protocole ClickHouse prend en charge la compression des blocs de données avec sommes de contrôle.
Utilisez LZ4 si vous ne savez pas quel mode choisir.
“
| valeur | nom | description |
|---|
0x02 | None | Aucune compression, uniquement des sommes de contrôle |
0x82 | LZ4 | Extrêmement rapide, bonne compression |
0x90 | ZSTD | Zstandard, assez rapide, meilleure compression |
LZ4 et ZSTD ont tous deux été créés par le même auteur, mais avec des compromis différents.
D’après les tests de performance de Facebook :
| nom | ratio | compression | décompression |
|---|
| 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 |
| champ | type | description |
|---|
| checksum | uint128 | Somme de contrôle de (header + compressed data) |
| raw_size | uint32 | Taille brute sans en-tête |
| data_size | uint32 | Taille des données non compressées |
| mode | byte | Mode de compression |
| compressed_data | binary | Bloc de données compressées |
L’en-tête est constitué de (raw_size + data_size + mode), et la taille brute correspond à len(header + compressed_data).
La somme de contrôle est hash(header + compressed_data), à l’aide de ClickHouse CityHash.
Si le mode None est utilisé, compressed_data est égal aux données d’origine.
Le mode sans compression est utile pour renforcer l’intégrité des données grâce aux sommes de contrôle, car
le surcoût du hachage est négligeable. Dernière modification le 29 juin 2026