Todos os produtos
Search
Central de documentação

PolarDB:Criar uma partição híbrida

Última atualização: Sep 02, 2026

Crie uma tabela com particionamento híbrido para acessar dados armazenados em diferentes mecanismos de armazenamento.

O diagrama a seguir ilustra o funcionamento do particionamento híbrido.

image

O particionamento híbrido separa dados quentes e frios ao armazenar as partições de uma tabela em diferentes mídias de armazenamento. Essa abordagem reduz os custos de armazenamento de dados frios sem afetar o desempenho de consultas ou operações DML nos dados quentes.

Nota

Para arquivar uma tabela particionada como hybrid partitioned table, atenda às seguintes condições:

  • MySQL 8.0.2 com versão de revisão 8.0.2.2.34.1 ou posterior. Defina o parâmetro loose_polar_allow_create_hybrid_partition como ON.

  • MySQL 8.0.2 com versão de revisão anterior a 8.0.2.2.34.1. Atualize para uma versão de revisão mais recente.

Pré-requisitos

  • O cluster deve executar o PolarDB for MySQL 8.0.2 com versão de revisão 8.0.2.2.34.1 ou posterior. Visualize o número da versão para verificar a versão do seu cluster.

  • Os arquivos de dados das partições a serem criadas já devem existir no OSS e seus nomes devem seguir estas regras:

    • As extensões de arquivo e os marcadores de partição devem estar em letras maiúsculas.

    • Os nomes de tabelas e partições devem corresponder aos definidos no banco de dados.

    Por exemplo, se a partição p1 da tabela t1 utilizar o mecanismo CSV, o arquivo de dados dessa partição será nomeado como t1#P#p1.CSV.

  • Tabelas particionadas arquivadas por meio do arquivamento de dados frios podem ser convertidas em tabelas com particionamento híbrido.

Limitações

  • Uma tabela com particionamento híbrido deve conter pelo menos uma partição que utilize o mecanismo de armazenamento InnoDB. O mecanismo no nível da tabela deve ser InnoDB.

  • Ao criar uma tabela com particionamento híbrido e subpartições, o mecanismo da partição de primeiro nível deve corresponder ao mecanismo da tabela, e pelo menos uma subpartição deve usar o mecanismo de armazenamento InnoDB.

  • Tabelas com particionamento híbrido suportam apenas os tipos de partição RANGE e LIST .

  • Operações DML (incluindo INSERT, UPDATE, DELETE ou LOAD) não são suportadas em partições OSS em tabelas com particionamento híbrido.

Parâmetros

Ao utilizar tabelas com particionamento híbrido, configure os seguintes parâmetros na página Parameters do seu cluster PolarDB conforme as necessidades do seu negócio (consulte Configurar).

Parameter

Level

Description

loose_hybrid_partition_query_mix_engine_enabled

Global

Define a regra para consulta de tabelas com particionamento híbrido. Valores válidos:

  • OFF (padrão): A consulta abrange partições tanto no mecanismo InnoDB quanto no X-Engine.

  • ON: A consulta abrange partições nos mecanismos InnoDB, X-Engine e também no OSS.

loose_polar_dlm_storage_mode

Global

Controla o recurso de arquivamento automático de dados frios (DLM). Valores válidos:

  • OFF (padrão): O armazenamento DLM está desativado. O agendador não inicia e nenhuma operação de arquivamento é executada.

  • RO (não recomendado): O armazenamento DLM é somente leitura. Partições de dados frios arquivadas podem ser consultadas, mas novas operações de escrita para arquivamento não são realizadas. Este valor raramente é usado em produção.

  • RW (recomendado): O armazenamento DLM permite leitura e escrita. O agendador inicia e suporta arquivamento automático com base nas políticas de DLM, permitindo também a consulta dos dados arquivados.

Nota
  • Este parâmetro aplica-se apenas a clusters MySQL 8.0.2 com versão de revisão 8.0.2.2.34.1 ou posterior.

  • Após ativar o arquivamento de dados frios, o sistema define automaticamente este parâmetro como RW. Nenhuma modificação manual é necessária.

  • Se você utilizar apenas o mecanismo de alta compressão X-Engine para arquivar tabelas particionadas (sem arquivamento de dados frios no OSS), defina manualmente este parâmetro como RW para habilitar o agendamento do DLM.

loose_allow_create_hybrid_partition

Global

Determina se é permitido criar ou arquivar tabelas particionadas contendo partições com mecanismos não-InnoDB. Valores válidos:

  • OFF (padrão): A criação de tabelas particionadas com partições não-InnoDB é proibida. Todas as partições devem usar o mecanismo InnoDB.

  • ON (recomendado): Permite a criação de tabelas particionadas contendo partições não-InnoDB. É possível especificar OSS (CSV/ORC) ou o mecanismo X-Engine no nível da partição.

Nota
  • Este parâmetro aplica-se apenas a clusters MySQL 8.0.2 com versão de revisão 8.0.2.2.34.1 ou posterior.

  • Ao ativar o arquivamento de dados frios, o sistema pode definir automaticamente este parâmetro como ON, dependendo da versão.

loose_use_oss_meta

Global / Session

Controla se o gerenciamento de metadados (meta) do OSS está ativado para tabelas OSS. O parâmetro loose_csv_oss_file_filter depende desta configuração. Valores válidos:

  • ON: O gerenciamento de metadados do OSS está ativado. Informações de meta são gravadas quando tabelas OSS são criadas ou arquivadas. A lista de arquivos é obtida pela leitura dos metadados, e o recurso de filtragem loose_csv_oss_file_filter é suportado.

  • OFF: O gerenciamento de metadados do OSS está desativado. Nenhuma informação de meta é gravada. Os metadados são obtidos listando diretamente os arquivos no OSS, e o loose_csv_oss_file_filter não é suportado.

loose_csv_oss_file_filter

Global / Session

Habilita a filtragem no nível de arquivo (File Filter) durante consultas a tabelas OSS. Esse recurso utiliza estatísticas min/max e filtros Bloom para ignorar arquivos de dados irrelevantes, reduzindo a quantidade de dados varridos no OSS. Requer que o parâmetro loose_use_oss_meta esteja ativado. Valores válidos:

  • OFF: A filtragem de arquivos está desativada. Todos os arquivos de dados da tabela OSS são verificados durante as consultas.

  • ON (recomendado): A filtragem de arquivos está ativada. Durante as consultas, o loose_csv_oss_file_filter é usado em conjunto com as condições WHERE para melhorar o desempenho.

dlm_prune_archiving_oss_partitions

Global / Session

Controla a poda automática de partições OSS arquivadas pelo recurso Data Lifecycle Management (DLM). Quando operações DML (UPDATE/DELETE) são executadas, o sistema realiza a poda automática das partições que estão sendo arquivadas para o OSS (ORC/CSV) e daquelas já arquivadas. Isso evita que operações DML sejam bloqueadas pelo arquivamento e resolve conflitos entre DML e DDL. Valores válidos:

  • ON (padrão, recomendado): Operações DML (UPDATE/DELETE) realizam automaticamente a poda das partições em processo de arquivamento para o OSS.

  • OFF: Operações DML não realizam a poda automática das partições em processo de arquivamento para o OSS.

hybrid_partition_query_mix_engine_enabled

Global / Session

Controla a poda automática de consultas. Ao executar uma consulta SELECT, o sistema realiza a poda automática das partições OSS (ORC/CSV) para evitar consultas lentas causadas pelo acesso a dados frios. Valores válidos:

  • OFF (padrão, recomendado): As consultas realizam automaticamente a poda das partições OSS.

  • ON (não recomendado): As consultas não realizam a poda automática das partições OSS.

Criar uma partição híbrida

Para criar uma tabela com particionamento híbrido, é necessário um servidor OSS. Caso ainda não possua um, utilize a sintaxe abaixo para criá-lo:

CREATE SERVER oss_server_name
FOREIGN DATA WRAPPER oss
OPTIONS(EXTRA_SERVER_INFO '{"oss_endpoint": "<my_oss_endpoint>",
"oss_bucket": "<my_oss_bucket>", "oss_access_key_id": "<my_oss_access_key_id>",
"oss_access_key_secret": "<my_oss_access_key_secret>", "oss_prefix":"<my_oss_prefix>", "oss_sts_token": "<my_oss_sts_token>"}');
Nota

Se a versão do cluster for PolarDB for MySQL 8.0.2 e a versão de revisão for 8.0.2.2.6 ou posterior, o parâmetro my_oss_sts_token será suportado.

A tabela a seguir descreve os parâmetros.

Parameter

Type

Description

oss_server_name

string

Nome do servidor OSS.

Nota

Este parâmetro é global e deve ser único. O nome não diferencia maiúsculas de minúsculas e pode ter até 64 caracteres. Nomes maiores que 64 caracteres serão truncados. Você pode especificar o nome do servidor OSS como uma string entre aspas.

my_oss_endpoint

string

Endpoint da região do OSS.

Nota

Ao acessar o banco de dados a partir de um host Alibaba Cloud, utilize um endpoint interno para evitar custos de tráfego de internet. Endpoints internos geralmente contêm a palavra "internal".

my_oss_bucket

string

Bucket do OSS que contém os arquivos de dados. Este bucket já deve existir no OSS.

my_oss_access_key_id

string

AccessKey ID para acesso ao OSS.

my_oss_access_key_secret

string

AccessKey Secret para acesso ao OSS.

my_oss_prefix

string

Prefixo do caminho para os arquivos de dados no OSS. Este valor não pode estar vazio nem conter caracteres especiais.

my_oss_sts_token

string

Credenciais de acesso temporário ao OSS. Para obter detalhes sobre como adquirir credenciais de acesso temporário ao OSS, consulte Obtain temporary access credentials.

Nota

O valor do parâmetro my_oss_sts_token possui um tempo de expiração padrão. Caso o my_oss_sts_token tenha expirado, redefina todos os valores dos parâmetros em EXTRA_SERVER_INFO utilizando o comando a seguir.

ALTER SERVER server_name OPTIONS(EXTRA_SERVER_INFO '{"oss_endpoint": "<my_oss_endpoint>",
    "oss_bucket": "<my_oss_bucket>", "oss_access_key_id": "<my_oss_access_key_id>",
    "oss_access_key_secret": "<my_oss_access_key_secret>", "oss_prefix":"<my_oss_prefix>", "oss_sts_token": "<my_oss_sts_token>"}');

O exemplo abaixo demonstra como criar uma tabela com particionamento híbrido:

CREATE TABLE t2(a1 INT, a2 VARCHAR(30), a3 VARCHAR(256))
CONNECTION = "oss_server_name"
PARTITION BY RANGE(a1)
(
   PARTITION p1 values less than (1000) ENGINE = CSV,
   PARTITION p2 values less than (2000) ENGINE = CSV,
   PARTITION p3 values less than (3000) ENGINE = INNODB
);

Consultar uma partição híbrida

Existem três maneiras de consultar partições em diferentes mecanismos de armazenamento:

  • Defina o parâmetro hybrid_partition_query_mix_engine_enabled como ON. As consultas retornarão dados das partições InnoDB, X-Engine e OSS. Exemplo:

    -- t1 is a hybrid partitioned table.
    SELECT * FROM t1;
  • Defina o parâmetro hybrid_partition_query_mix_engine_enabled como OFF. As consultas retornarão dados apenas das partições InnoDB e X-Engine. Exemplo:

    -- t1 is a hybrid partitioned table.
    SELECT * FROM t1;
  • Consulte uma partição específica pelo nome. Isso recupera dados da partição especificada, independentemente do seu mecanismo de armazenamento. Exemplo:

    -- t1 is a hybrid partitioned table, and p1 is the name of the partition to query.
    SELECT * FROM t1 partition (p1);