À medida que os dados corporativos crescem, armazenar tudo — incluindo dados mornos e frios com acesso pouco frequente — em tabelas InnoDB padrão faz com que os custos de armazenamento aumentem continuamente. Por outro lado, arquivar esses dados em um armazenamento externo sacrifica o acesso analítico e as operações de leitura e escrita online. O PolarDB for MySQL oferece camadas de dados baseadas no X-Engine. É possível converter uma tabela inteira ou partições específicas para o X-Engine, que possui alta compactação. Assim, o InnoDB (dados quentes) e o X-Engine (dados mornos ou frios) coexistem na mesma tabela. Isso reduz os custos de armazenamento e mantém o acesso online aos dados, enquanto os dados no X-Engine continuam a suportar gravações DML e alterações de esquema DDL online.
Como funciona
O recurso de particionamento híbrido do PolarDB for MySQL permite que diferentes partições dentro de uma única tabela particionada usem mecanismos de armazenamento distintos. O funcionamento é o seguinte:
Camadas de dados: mantenha as partições de dados "quentes" com acesso frequente no mecanismo InnoDB para obter o melhor desempenho de leitura e escrita. Migre as partições de dados "mornos" ou "frios" com acesso menos frequente para o mecanismo X-Engine.
Roteamento inteligente: ao consultar a tabela, o PolarDB roteia a solicitação automaticamente para a partição correta e seu respectivo mecanismo de armazenamento, com base nas condições da consulta. Todo o processo é transparente para a camada de aplicação.
Alta taxa de compactação: o mecanismo X-Engine utiliza algoritmos avançados de compactação e o formato opcional {{XREF_0}} para entregar uma taxa de compactação de dados extremamente alta. Isso reduz significativamente o uso de armazenamento físico e diminui os custos.
Escopo de aplicação
Antes de usar este recurso, verifique se o seu cluster PolarDB for MySQL atende aos seguintes requisitos de versão.
-
Arquivar uma tabela padrão:
MySQL 8.0.1 com revisão 8.0.1.1.31 ou posterior.
MySQL 8.0.2 com revisão 8.0.2.2.12 ou posterior.
Arquivar uma tabela particionada: MySQL 8.0.2 com revisão 8.0.2.2.12 ou posterior.
Arquivar em um {{XREF_1}}: MySQL 8.0.2 com revisão 8.0.2.2.34.1 ou posterior.
Preparativos
Antes de começar a arquivar os dados, conclua os seguintes preparativos.
{{XREF_2}}: torne-o disponível como opção de mecanismo de armazenamento para tabelas ou partições.
-
Para arquivar uma tabela particionada como um {{XREF_3}}, as seguintes condições devem ser atendidas:
MySQL 8.0.2 com versão secundária 8.0.2.2.34.1 ou posterior. É necessário {{XREF_4}} o parâmetro
loose_polar_allow_create_hybrid_partitioncomoON.MySQL 8.0.2 com versão secundária anterior a 8.0.2.2.34.1. Atualize para uma versão secundária mais recente.
Arquivar tabelas padrão
Converta os dados e o mecanismo de armazenamento de uma tabela inteira não particionada de InnoDB para X-Engine.
Sintaxe
ALTER TABLE table_name ENGINE=engine_name[ TABLE_FORMAT=COLUMN];
Parâmetros
Parâmetro | Descrição |
table_name | O nome da tabela a ser arquivada no X-Engine. |
engine_name | O nome do mecanismo de armazenamento.
|
TABLE_FORMAT | Opcional. O formato de armazenamento de dados do X-Engine.
|
Exemplos
-
Arquive uma tabela padrão
t1para uma tabela orientada a linhas do X-Engine:ALTER TABLE t1 ENGINE=XEngine; -
Arquive uma tabela padrão
t1para uma tabela orientada a colunas do X-Engine:ALTER TABLE t1 ENGINE=XEngine TABLE_FORMAT=COLUMN; -
Reverta uma tabela padrão
t1de volta para o mecanismo InnoDB:ALTER TABLE t1 ENGINE=InnoDB;
Arquivar tabelas particionadas
Arquivar uma partição especificada
Arquive uma partição específica em uma tabela particionada — geralmente uma partição mais antiga que armazena dados frios — no X-Engine. Isso implementa o armazenamento em camadas de dados quentes e frios, e a tabela resultante se torna uma tabela particionada híbrida.
Sintaxe
ALTER TABLE table_name CHANGE PARTITION part_name ENGINE = XEngine[ TABLE_FORMAT=COLUMN];
Parâmetros
Parâmetro | Descrição |
table_name | O nome da tabela a ser arquivada no X-Engine. |
part_name | O nome da partição a ser arquivada no X-Engine. |
TABLE_FORMAT | Opcional. O formato de armazenamento de dados do X-Engine.
|
Exemplos
-
Arquive a partição
p1de uma tabela particionadat1para o formato de armazenamento em linha do X-Engine:ALTER TABLE t1 CHANGE PARTITION p1 ENGINE = XEngine; -
Arquive a partição
p1de uma tabela particionadat1para uma tabela orientada a colunas do X-Engine:ALTER TABLE t1 CHANGE PARTITION p1 ENGINE = XEngine TABLE_FORMAT=COLUMN;
Reverter para o mecanismo InnoDB
Sintaxe
ALTER TABLE table_name REORGANIZE PARTITION part_name INTO (partition_definition);
Parâmetros
Parâmetro | Descrição |
table_name | O nome da tabela particionada híbrida. |
part_name | O nome da partição a ser revertida para o mecanismo InnoDB. |
partition_definition | Deve ser consistente com a Nota A cláusula ENGINE na definição da partição é opcional. Se nenhum nome de mecanismo for especificado, o mecanismo padrão será o InnoDB, o mesmo da tabela. Se |
Exemplo
Reverta os dados armazenados na partição p1 de uma tabela particionada t1 que foram arquivados no X-Engine de volta para o mecanismo InnoDB.
ALTER TABLE t1 REORGANIZE PARTITION p1 INTO(PARTITION p1 VALUES LESS THAN(100));
Aplicar em produção
Melhor prática: arquive apenas dados mornos e frios com baixa frequência de acesso no X-Engine para alcançar o melhor equilíbrio entre custo e desempenho de consulta. Para dados com gravação intensiva e alto potencial de compactação (como logs e dados de instrumentação), prefira o formato de armazenamento em colunas do X-Engine (
TABLE_FORMAT=COLUMN).Mitigação de riscos: a migração de dados (
ALTER TABLE) é uma operação que consome muitos recursos. Embora seja executada online, recomendamos executá-la fora dos horários de pico para evitar flutuações de desempenho nas cargas de trabalho de produção.Monitoramento e alertas: durante o arquivamento, execute
SHOW FULL PROCESSLIST;para acompanhar o progresso das operações DDL. Ao mesmo tempo, monitore de perto métricas importantes, como uso de CPU, IOPS e espaço em disco do cluster no console.