Todos os produtos
Search
Central de documentação

PolarDB:Defina um algoritmo de compactação

Última atualização: Jun 28, 2026

O PolarDB for MySQL oferece suporte a dois algoritmos de compactação para In-Memory Columnar Indexes (IMCIs): LZ4 e ZSTD. Definir o algoritmo adequado permite equilibrar o desempenho das consultas e o custo de armazenamento de cada tabela ou coluna.

Algoritmos compatíveis

Algoritmo

Velocidade de compactação

LZ4

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

ZSTD (Zstandard)

Semelhante ao LZ4. Consulte Zstandard GitHub.

O ZSTD é o algoritmo padrão (imci_default_codec = ZSTD).

Defina a compactação ao criar uma tabela

Especifique o parâmetro codec_opt no campo COMMENT da instrução CREATE TABLE.

Sintaxe:

COMMENT 'COLUMNAR=1 codec_opt={LZ4}'

Valores válidos: LZ4, ZSTD e NONE (sem compactação).

Regras de precedência:

Configuração

Escopo

Precedência

Parâmetro imci_default_codec

Sessão

Mais baixa

codec_opt no COMMENT da tabela

Tabela

Intermediária

codec_opt no COMMENT da coluna

Coluna

Mais alta

Um valor de codec_opt no nível da coluna substitui tanto o valor no nível da tabela quanto o parâmetro imci_default_codec. Para alterar o algoritmo padrão no nível da sessão, execute:

SET imci_default_codec="{LZ4}";

Exemplo:

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

Neste exemplo:

  • t12: As três colunas usam LZ4 porque essa configuração foi definida no nível da tabela.

  • t13: A col1 não tem compactação (NONE). A col2 herda o padrão do nível da sessão (LZ4 definido por SET imci_default_codec). A col3 usa ZSTD porque o valor no nível da coluna tem precedência.

Atualize o algoritmo de compactação de uma coluna

A instrução ALTER TABLE não reconstrói os dados do IMCI. Portanto, um novo valor de codec_opt definido via ALTER TABLE não entra em vigor imediatamente.

-- 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}';

Após a execução dessa instrução ALTER TABLE:

Estado

Dados existentes

Dados recém-inseridos

Antes da reconstrução dos dados

Usa o algoritmo original (ZSTD)

Usa o algoritmo original (ZSTD)

Após a reconstrução dos dados

Usa o novo algoritmo (LZ4)

Usa o novo algoritmo (LZ4)

Para aplicar o novo algoritmo imediatamente, exclua os dados originais da coluna e recrie a tabela com o valor atualizado de codec_opt.

Uma versão futura oferecerá suporte à modificação direta da compactação do IMCI sem necessidade de reconstrução dos dados.