Todos los productos
Search
Centro de documentos

PolarDB:Establezca un algoritmo de compresión

Última actualización: Sep 05, 2026

PolarDB for MySQL es compatible con dos algoritmos de compresión para In-Memory Columnar Indexes (IMCIs): LZ4 y ZSTD. El algoritmo adecuado le permite equilibrar el rendimiento de las consultas y el costo de almacenamiento por tabla o columna.

Algoritmos compatibles

Algoritmo

Velocidad de compresión

LZ4

Superior a 500 MB/s por núcleo. Consulte LZ4 GitHub.

ZSTD (Zstandard)

Similar a LZ4. Consulte Zstandard GitHub.

ZSTD es el algoritmo predeterminado (imci_default_codec = ZSTD).

Establezca la compresión cuando cree una tabla

Especifique el parámetro codec_opt en el campo COMMENT de una instrucción CREATE TABLE.

Sintaxis:

COMMENT 'COLUMNAR=1 codec_opt={LZ4}'

Valores válidos: LZ4, ZSTD y NONE (sin compresión).

Reglas de precedencia:

Configuración

Ámbito

Precedencia

Parámetro imci_default_codec

Sesión

Más baja

codec_opt en el COMMENT de la tabla

Tabla

Media

codec_opt en el COMMENT de la columna

Columna

Más alta

Un valor de codec_opt en el nivel de columna anula tanto el valor del nivel de tabla como imci_default_codec. Para cambiar el algoritmo predeterminado en el nivel de sesión, ejecute:

SET imci_default_codec="{LZ4}";

Ejemplo:

-- Table-level: all columns use LZ4
CREATE TABLE t12(
  col1 INT,
  col2 DATETIME,
  col3 VARCHAR(200)
) ENGINE InnoDB COMMENT 'COLUMNAR=1 codec_opt={LZ4}';

-- Mixed: column-level overrides session default
SET imci_default_codec="{LZ4}";

CREATE TABLE t13(
  col1 INT COMMENT 'codec_opt={NONE}',        -- No compression
  col2 DATETIME,                               -- Inherits imci_default_codec (LZ4)
  col3 VARCHAR(200) COMMENT 'codec_opt={ZSTD}' -- Column-level overrides default
) ENGINE InnoDB COMMENT 'COLUMNAR=1';

En este ejemplo:

  • t12: las tres columnas usan LZ4 porque se establece en el nivel de tabla.

  • t13: col1 no tiene compresión (NONE). col2 hereda el valor predeterminado del nivel de sesión (LZ4 de SET imci_default_codec). col3 usa ZSTD porque el valor del nivel de columna tiene precedencia.

Actualice el algoritmo de compresión de una columna

ALTER TABLE no reconstruye los datos de IMCI, por lo que un nuevo valor de codec_opt establecido mediante ALTER TABLE no surte efecto de inmediato.

-- Original table: col1 and col2 use ZSTD
CREATE TABLE t14(
  col1 INT COMMENT 'COLUMNAR=1 codec_opt={ZSTD}',
  col2 DATETIME COMMENT 'COLUMNAR=1 codec_opt={ZSTD}',
  col3 VARCHAR(200)
) ENGINE InnoDB;

-- Attempt to switch col2 to LZ4
ALTER TABLE t14 COMMENT 'COLUMNAR=1', MODIFY COLUMN col2 DATETIME COMMENT 'codec_opt={LZ4}';

Después de esta instrucción ALTER TABLE:

Estado

Datos existentes

Datos recién insertados

Antes de una reconstrucción de datos

Usa el algoritmo original (ZSTD)

Usa el algoritmo original (ZSTD)

Después de una reconstrucción de datos

Usa el nuevo algoritmo (LZ4)

Usa el nuevo algoritmo (LZ4)

Para aplicar el nuevo algoritmo de inmediato, elimine los datos originales de la columna y cree nuevamente la tabla con el valor actualizado de codec_opt.

La modificación directa de la compresión de IMCI sin una reconstrucción de datos será compatible en una versión futura.