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

# Modos de compresión

> Modos de compresión de columnas en ClickHouse

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

El protocolo de ClickHouse admite la compresión de **bloques de datos** con sumas de comprobación.
Use `LZ4` si no está seguro de qué modo elegir.
\`\`

<Tip>
  Obtenga más información sobre los [códecs de compresión de columnas](/es/reference/statements/create/table#column_compression_codec) disponibles y especifíquelos al crear sus tablas o más adelante.
</Tip>

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

| valor  | nombre                | descripción                                     |
| ------ | --------------------- | ----------------------------------------------- |
| `0x02` | [Ninguno](#none-mode) | Sin compresión, solo sumas de comprobación      |
| `0x82` | LZ4                   | Extremadamente rápido, buena compresión         |
| `0x90` | ZSTD                  | Zstandard, bastante rápido, la mejor compresión |

Tanto LZ4 como ZSTD fueron creados por el mismo autor, pero con distintas compensaciones.
Según los [benchmarks de Facebook](https://facebook.github.io/zstd/#benchmarks):

| nombre            | ratio | compresión | descompresión |
| ----------------- | ----- | ---------- | ------------- |
| **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">
  ## Bloque
</div>

| campo            | tipo    | descripción                                                                                       |
| ---------------- | ------- | ------------------------------------------------------------------------------------------------- |
| checksum         | uint128 | [Hash](/es/resources/develop-contribute/native-protocol/hash) de (encabezado + datos comprimidos) |
| raw\_size        | uint32  | Tamaño bruto sin encabezado                                                                       |
| data\_size       | uint32  | Tamaño de los datos sin comprimir                                                                 |
| mode             | byte    | Modo de compresión                                                                                |
| compressed\_data | binary  | Bloque de datos comprimidos                                                                       |

<Image img="https://mintcdn.com/private-7c7dfe99-fix-nav-issues/ddNWBC5mE_w-syUp/images/data-compression/ch_compression_block.png?fit=max&auto=format&n=ddNWBC5mE_w-syUp&q=85&s=07df8605c40448372161213a95cb2e08" size="md" alt="Diagrama que ilustra la estructura del bloque de compresión de ClickHouse" width="2048" height="602" data-path="images/data-compression/ch_compression_block.png" />

El encabezado es (raw\_size + data\_size + mode); el tamaño bruto consiste en len(header + compressed\_data).

La suma de verificación es `hash(header + compressed_data)`, mediante [ClickHouse CityHash](/es/resources/develop-contribute/native-protocol/hash).

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

Si se usa el modo *None*, `compressed_data` es igual a los datos originales.
El modo sin compresión es útil para garantizar una mayor integridad de los datos mediante sumas de comprobación, porque
la sobrecarga del hash es insignificante.
