> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-fbfa8bee.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Modes de compression

> Modes de compression des colonnes dans ClickHouse

export const Image = ({img, alt, size}) => {
  return <Frame>
      <img src={img} alt={alt} />
    </Frame>;
};

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.
\`\`

<Tip>
  Pour en savoir plus sur les [codecs de compression des colonnes](/fr/reference/statements/create/table#column_compression_codec) disponibles, et sur la manière de les spécifier lors de la création de vos tables ou ultérieurement.
</Tip>

<div id="modes">
  ## Modes
</div>

| valeur | nom                | description                                           |
| ------ | ------------------ | ----------------------------------------------------- |
| `0x02` | [None](#none-mode) | 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](https://facebook.github.io/zstd/#benchmarks) :

| 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     |

<div id="block">
  ## Bloc
</div>

| champ            | type    | description                                                                                              |
| ---------------- | ------- | -------------------------------------------------------------------------------------------------------- |
| checksum         | uint128 | [Somme de contrôle](/fr/resources/develop-contribute/native-protocol/hash) 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                                                                              |

<Image img="https://mintcdn.com/private-7c7dfe99-mintlify-fbfa8bee/qvDh3oxLPI7c74wx/images/data-compression/ch_compression_block.png?fit=max&auto=format&n=qvDh3oxLPI7c74wx&q=85&s=82f81bea928729689a49ec1602029955" size="md" alt="Schéma illustrant la structure du bloc de compression de ClickHouse" width="2048" height="602" data-path="images/data-compression/ch_compression_block.png" />

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](/fr/resources/develop-contribute/native-protocol/hash).

<div id="none-mode">
  ## Mode None
</div>

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.
