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.
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.
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_partitioncomoON.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
p1da tabelat1utilizar o mecanismo CSV, o arquivo de dados dessa partição será nomeado comot1#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
RANGEeLIST.Operações DML (incluindo
INSERT,UPDATE,DELETEouLOAD) 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 |
| Global | Define a regra para consulta de tabelas com particionamento híbrido. Valores válidos:
|
| Global | Controla o recurso de arquivamento automático de dados frios (DLM). Valores válidos:
Nota
|
| Global | Determina se é permitido criar ou arquivar tabelas particionadas contendo partições com mecanismos não-InnoDB. Valores válidos:
Nota
|
| Global / Session | Controla se o gerenciamento de metadados (meta) do OSS está ativado para tabelas OSS. O parâmetro
|
| 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
|
| 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:
|
| 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:
|
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>"}');
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 |
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_enabledcomo 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_enabledcomo 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);