Todos os produtos
Search
Central de documentação

PolarDB:Atualização paralela

Última atualização: Jun 29, 2026

No PolarDB for MySQL, tanto a atualização completa quanto a execução inicial de uma atualização incremental de materialized view oferecem dois modos de gravação paralela: ETL e ePQ. A escolha do modo ideal para aumentar a eficiência depende das características da carga de trabalho, como tabelas largas ou estreitas, série do cluster (Cluster Edition ou Multi-primary Cluster) e necessidade de offloading de computação.

Visão geral

Para aumentar a eficiência de execução, o PolarDB for MySQL oferece os seguintes modos de gravação paralela para atualizações completas ou iniciais incrementais de materialized view:

Modo

Ativação

Arquitetura

Casos de uso

Gravação Paralela ETL (Padrão)

Modo padrão (ativado automaticamente quando paralelismo > 1).

Transfere consultas para nós remotos, onde múltiplos workers consomem e gravam resultados em paralelo.

Tabelas largas, grandes volumes de dados e cenários que exigem offloading de consultas.

Gravação Paralela ePQ

Ativação manual obrigatória.

O framework PQ divide a instrução INSERT SELECT para execução paralela por múltiplos workers e suporta offloading MPP.

Tabelas estreitas e cenários que exigem paralelismo ponta a ponta.

Ambos os modos exigem que materialized_view_refresh_parallelism tenha valor maior que 1.

Compatibilidade

Versão

Modos de atualização paralela

Observações

PolarDB for MySQL 8.0.1 com versão secundária do kernel 8.0.1.1.54 ou posterior

Modo ETL

Apenas modo ETL.

PolarDB for MySQL 8.0.2 com versões secundárias do kernel 8.0.2.2.34 e 8.0.2.2.35

Modo ePQ

  • Apenas modo ePQ.

  • Incompatível com MDL de partição. Se o particionamento implícito estiver ativado, desative partition_level_mdl.

Processo de atualização

A atualização completa de uma materialized view consiste em três etapas:

  1. Criação da tabela contêiner: O sistema cria uma nova tabela contêiner a partir da definição da materialized view. Se materialized_view_implicit_partition_num > 1, adiciona-se automaticamente uma partição hash para evitar contenção de bloqueios durante gravações paralelas.

    Nota

    O MySQL 8.0.1 não suporta o parâmetro materialized_view_implicit_partition_num.

  2. Gravação de dados em paralelo: O sistema grava dados em paralelo conforme o modo selecionado.

  3. Construção de índice colunar (Opcional): Se materialized_view_add_columnar_index_after_insert = ON, o sistema conclui primeiro a atualização e depois constrói um índice colunar (IMCI) para a tabela contêiner.

Modo de gravação paralela ETL

Funcionamento

  1. O PolarDB seleciona um nó remoto (nó somente leitura de índice column-store ou row-store) com base na política de offloading e estabelece uma conexão.

  2. O nó primário (RW) envia a consulta de definição da materialized view ao nó remoto para execução.

  3. O nó remoto transmite o conjunto de resultados de volta. Há suporte para transmissão de dados compactados.

  4. O nó primário (RW) cria múltiplas threads de worker. Cada thread busca linhas em paralelo e as grava em diferentes partições da tabela contêiner.

Recursos

  • A computação da consulta ocorre no nó remoto e não consome recursos de CPU no nó primário (RW).

  • As operações de gravação ocorrem localmente no nó primário (RW) para garantir consistência transacional.

  • Em cenários de tabelas largas, o comprimento da linha não afeta a eficiência paralela.

  • Suporta cluster multi-master (Limitless).

Uso

O método para modificar parâmetros do cluster PolarDB difere entre o console e uma sessão de banco de dados. As diferenças são as seguintes:

  • No console do PolarDB

    • Compatibilidade: Para manter compatibilidade com arquivos de configuração do MySQL, alguns parâmetros de cluster no console do PolarDB possuem o prefixo loose_.

    • Procedimento: Localize e modifique os parâmetros com o prefixo loose_.

  • Em uma sessão de banco de dados (via linha de comando ou cliente)

    • Procedimento: Ao usar o comando SET para modificar um parâmetro em uma sessão de banco de dados, remova o prefixo loose_ e use o nome original do parâmetro.

Parâmetro

Valor de exemplo

Modificável por sessão

Descrição

materialized_view_refresh_parallelism

16

Não

Define o paralelismo. Valores maiores que 1 ativam a atualização paralela.

materialized_view_use_etl_parallel_insert

ON

Não

Especifica se deve usar o modo de gravação paralela ETL. O valor padrão é ON.

materialized_view_implicit_partition_num

16

Sim

Define o número de partições implícitas.

materialized_view_complete_refresh_offload_policy

FORCE_IMCI

Sim

Define a política de offloading para atualizações manuais por sessão.

Após configurar os parâmetros, execute o seguinte comando para atualizar a materialized view:

-- Refresh the materialized view
REFRESH MATERIALIZED VIEW <schema_name>.<mview_name>;

Modo de gravação paralela ePQ

Funcionamento (offloading MPP para nó somente leitura de índice column-store remoto quando a política de offloading é FORCE_IMCI)

  1. O sistema agenda PQ Workers em um nó somente leitura de índice column-store remoto para realizar varredura SELECT.

  2. Os PQ Workers enviam os resultados da varredura ao nó primário (RW) pela rede interna, que suporta compactação.

  3. Múltiplos PQ Workers varrem os dados da tabela de origem em paralelo no nó primário (RW).

  4. Os PQ Workers gravam os resultados da varredura em paralelo nas partições da tabela contêiner.

  5. Por fim, o nó primário (RW) conclui a gravação de dados localmente.

Recursos

  • Paralelismo ponta a ponta: Um único plano de execução paralela lida com varreduras e gravações.

  • Dimensionamento quase linear para tabelas estreitas.

  • Evita a limitação de transferência de rede de porta única do ETL.

  • Atualmente sem suporte em clusters Limitless. A operação reverte automaticamente para execução serial.

Compactação de rede (cenário de offloading MPP)

Pré-requisitos

Parâmetro

Valor de exemplo

Configurável no nível de sessão

Descrição

materialized_view_etl_compression_algorithm

ZSTD

Sim

Especifica o algoritmo de compactação para dados transferidos de um nó réplica durante a atualização da materialized view. Defina como ZSTD para ativar a compactação.

  • UNCOMPRESSED (padrão)

  • ZSTD

materialized_view_etl_compression_level

3

Sim

Especifica o nível de compactação. Se este parâmetro for definido como 0 (padrão) ou valor inválido, o sistema usa o nível 3 para o algoritmo ZSTD.

  • Valores válidos: 0–22

  • Valor padrão: 0

Impacto

  • Reduz em 60%–80% a quantidade de dados transferidos entre nós.

  • A compactação e descompactação adicionam sobrecarga de CPU. Considere esse compromisso em cenários limitados por CPU.

Recomendações

Use transferência compactada apenas para tabelas largas. Em tabelas estreitas, a sobrecarga de CPU da compactação pode anular os benefícios de rede; portanto, recomenda-se a configuração UNCOMPRESSED. Se sua materialized view for uma tabela larga e exigir offloading de execução, considere usar diretamente o modo ETL em vez do modo ePQ com offloading MPP. O modo ETL é inerentemente adequado para tabelas largas.

Procedimento

Cenário A: Offloading MPP para nó remoto

Parâmetro

Valor de exemplo

Configurável no nível de sessão

Descrição

materialized_view_refresh_parallelism

16

Não

Define o grau de paralelismo. Valores maiores que 1 ativam a atualização paralela.

materialized_view_implicit_partition_num

16

Sim

Define o número de partições implícitas.

Nota

O MySQL 8.0.1 não suporta o parâmetro materialized_view_implicit_partition_num.

materialized_view_complete_refresh_offload_policy

FORCE_IMCI

Sim

Para atualização manual, especifique uma política de offloading diferente para cada sessão.

pq_mpp_allow_imci_node

ON

Não

Permite agendamento de offloading para nó somente leitura de índice column-store.

materialized_view_etl_compression_algorithm

ZSTD

Sim

Ativa transferência compactada (recomendado para tabelas largas; opcional para tabelas estreitas).

materialized_view_etl_compression_level

3

Sim

Define o nível de compactação para transferências compactadas.

Após configurar esses parâmetros, execute a atualização:

-- Perform the refresh
REFRESH MATERIALIZED VIEW <schema_name>.<mview_name>;

Cenário B: Offloading ePQ para nó específico

Se o cluster tiver múltiplos nós somente leitura de índice column-store, use pq_mpp_allow_dispatch_to_imci_node para controlar quais nós podem receber solicitações de agendamento ePQ MPP. Defina este parâmetro como ON tanto no nó primário (RW) quanto no nó somente leitura de índice column-store de destino. O sistema não direciona agendamento para um nó somente leitura de índice column-store se este parâmetro não estiver ativado nele.

-- 1. On the primary (RW) node, disable its ability to act as a PQ Worker resource.
-- In the console, set pq_mpp_allow_imci_node = OFF;

-- 2. On the primary (RW) node, allow scheduling to an IMCI node.
-- In the console, set pq_mpp_allow_dispatch_to_imci_node = ON;

-- 3. Connect to the IMCI node that should handle the offloaded query, and enable the scheduling entry point only on that node.
-- In the console, set pq_mpp_allow_dispatch_to_imci_node = ON;

-- 4. Return to the primary (RW) node and refresh with the IMCI offload policy.
SET SESSION materialized_view_complete_refresh_offload_policy = FORCE_IMCI;
REFRESH MATERIALIZED VIEW <schema_name>.<mview_name>;

Após ativar esse recurso, use information_schema.cluster_group_resource_view para verificar o status do nó de destino. O nó somente leitura de índice column-store de destino deve exibir allow_to_dispatch, e sua coluna EXTRA deve conter Allow to dispatch to IMCI node. Neste modo, o nó somente leitura de índice column-store recebe apenas solicitações de agendamento e não atua como PQ Worker. Para fazer com que todos os nós somente leitura de índice column-store atuem como recursos de ePQ Worker, defina pq_mpp_allow_imci_node = ON.

Seleção do nó alvo de offloading

Quando a política de offloading não é MASTER, o sistema seleciona um nó remoto para executar a consulta SELECT.

A política determina o tipo de nó

Política

Tipo de nó candidato

Descrição

PREFER_IMCI

Nó somente leitura IMCI

Reverte para execução local no nó master (RW) e registra aviso.

FORCE_IMCI

Nó somente leitura IMCI

Falha com erro.

PREFER_TPRO

Nó somente leitura row-store

Reverte para execução local no nó master (RW) e registra aviso.

FORCE_TPRO

Nó somente leitura row-store

Falha com erro.

COST

Nó somente leitura IMCI ou row-store (baseado em custo)

Seleciona o tipo de nó disponível se houver apenas um. Se nenhum estiver disponível, reverte para o nó master (RW).

Lógica de decisão para a política COST

Quando materialized_view_complete_refresh_offload_policy = COST, o sistema determina o nó alvo comparando o custo do otimizador da consulta com um limiar:

  • Se custo da consulta ≥ cost_threshold_for_imci: Offloading para nó somente leitura IMCI. O IMCI é adequado para consultas de varredura e agregação de alto custo.

  • Se custo da consulta < cost_threshold_for_imci: Offloading para nó somente leitura row-store. Nós somente leitura row-store são suficientes para consultas leves.

-- Set the cost threshold (default is 0, which means all queries tend to be offloaded to IMCI).
SET SESSION cost_threshold_for_imci = 100000;

-- Use the COST policy.
SET SESSION materialized_view_complete_refresh_offload_policy = COST;

Balanceamento de carga multinó

Se múltiplos nós do mesmo tipo estiverem disponíveis, o sistema usa abordagem Round-Robin para selecionar um nó:

  • Cada tarefa de atualização seleciona o próximo nó com base em contador global.

  • Se a conexão com o nó selecionado falhar, o sistema tenta automaticamente o próximo nó na lista até esgotar todas as tentativas.

  • O sistema distribui tarefas de atualização para diferentes materialized views uniformemente entre os nós.

Para descarregar tarefas ePQ + MPP para um nó IMCI, use um dos dois métodos seguintes:

  1. Ative pq_mpp_allow_imci_node para permitir offloading para todos os nós somente leitura IMCI.

  2. Primeiro, defina pq_mpp_allow_imci_node = OFF, depois use pq_mpp_allow_dispatch_to_imci_node para restringir os nós somente leitura IMCI candidatos:

    • No nó master (RW), defina pq_mpp_allow_dispatch_to_imci_node = ON para permitir que o nó master (RW) aceite o status de ponto de entrada de despacho de nós somente leitura IMCI remotos.

    • Em cada nó somente leitura IMCI que deva processar consultas descarregadas, defina pq_mpp_allow_dispatch_to_imci_node = ON.

    • Em cada nó somente leitura IMCI que não deva processar consultas descarregadas, mantenha pq_mpp_allow_dispatch_to_imci_node = OFF.

Políticas recomendadas

Em ambiente de produção, use FORCE_IMCI ou FORCE_TPRO. Evite políticas PREFER_*.

Motivo: Se o nó alvo estiver indisponível, uma política PREFER_* reverte silenciosamente para execução local no nó master (RW). Essa reversão faz com que a instrução INSERT SELECT realize varredura completa e gravação no nó master (RW). Isso gera uma transação grande e pode impactar o desempenho de cargas de trabalho online no nó master (RW).

Exemplos de configuração

-- Recommended: Force the use of an IMCI node. If unavailable, the operation fails instead of falling back.
SET SESSION materialized_view_complete_refresh_offload_policy = FORCE_IMCI;

-- Use only row-store read-only nodes. If unavailable, the operation fails.
SET SESSION materialized_view_complete_refresh_offload_policy = FORCE_TPRO;

-- Automatically choose between IMCI and TPRO based on query cost.
SET SESSION materialized_view_complete_refresh_offload_policy = COST;
SET SESSION cost_threshold_for_imci = 50000;

Escopos e configurações de parâmetros

Regras básicas

  • **Parâmetros GLOBAL**: Defina-os apenas no console. Aplicam-se a todas as sessões e threads de atualização automática.

  • **Parâmetros SESSION**: Defina-os para a sessão atual usando SET SESSION. Você também pode modificar seus valores padrão no console. Threads de atualização automática usam os valores padrão GLOBAL.

Escopos de parâmetros para o modo de gravação paralela ETL

Parâmetro

Escopo

Configurável por sessão

Descrição

materialized_view_refresh_parallelism

GLOBAL

Não, deve ser GLOBAL

Todas as tarefas de atualização compartilham o mesmo paralelismo.

materialized_view_use_etl_parallel_insert

GLOBAL

Não, deve ser GLOBAL

A alternância de modo aplica-se a todas as tarefas.

materialized_view_complete_refresh_offload_policy

SESSION

Sim

Para atualizações manuais, especifique uma política de offloading diferente para cada sessão.

materialized_view_implicit_partition_num

SESSION

Sim

Permite que cada materialized view use um número diferente de partições.

materialized_view_use_atomic_autoinc_for_refresh

SESSION

Sim

Permite desativar a otimização de autoincremento atômico.

materialized_view_cache_etl_result

SESSION

Sim

Ativa o cache de conjunto de resultados.

Escopos de parâmetros para o modo de gravação paralela ePQ

Parâmetro

Escopo

Configurável por sessão

Descrição

materialized_view_refresh_parallelism

GLOBAL

Não, deve ser GLOBAL

Todas as tarefas de atualização compartilham o mesmo paralelismo.

materialized_view_use_etl_parallel_insert

GLOBAL

Não, deve ser GLOBAL

A alternância de modo aplica-se a todas as tarefas.

pq_mpp_allow_imci_node

GLOBAL

Não, deve ser GLOBAL

Controla se tarefas MPP podem ser agendadas em um nó IMCI.

pq_mpp_allow_dispatch_to_imci_node

GLOBAL

Não, deve ser GLOBAL

Permite o uso do ponto de entrada de agendamento IMCI. Este parâmetro deve estar ativado tanto no nó primário (RW) quanto no nó somente leitura alvo que contém o índice colunar.

materialized_view_complete_refresh_offload_policy

SESSION

Sim

Para atualizações manuais, especifique uma política de offloading diferente para cada sessão.

materialized_view_implicit_partition_num

SESSION

Sim

Permite que cada materialized view use um número diferente de partições.

materialized_view_etl_compression_algorithm

SESSION

Sim

Especifica o algoritmo de compactação de transporte para offloadings MPP. O sistema propaga automaticamente essa configuração para os PQ workers.

materialized_view_etl_compression_level

SESSION

Sim

Especifica o nível de compactação. O sistema propaga automaticamente essa configuração para os PQ workers.

Observações

  • Se você usar apenas atualizações manuais, ajuste os parâmetros SESSION para cada sessão.

  • Se depender de atualizações automáticas, defina valores padrão apropriados para todos os parâmetros SESSION no console.

  • Defina parâmetros GLOBAL no console, independentemente do método de atualização. As alterações entram em vigor imediatamente para todas as tarefas subsequentes.

  • As configurações SET SESSION não persistem após reinicialização do cluster. Por outro lado, os parâmetros GLOBAL modificados no console são persistentes.

Referência de parâmetros

Parâmetros principais

Parâmetro

Escopo

Valor

Padrão

Descrição

materialized_view_refresh_parallelism

GLOBAL

1–1024

1

Número de workers paralelos. Valores maiores que 1 ativam a atualização paralela.

materialized_view_implicit_partition_num

SESSION

0 a ilimitado

1

Número de partições HASH implícitas para a tabela contêiner. Valores maiores que 1 ativam o particionamento HASH implícito.

Nota

O MySQL 8.0.1 não suporta o parâmetro materialized_view_implicit_partition_num.

materialized_view_use_atomic_autoinc_for_refresh

SESSION

ON/OFF

ON

Melhora o desempenho usando valores de autoincremento atômico para a coluna de partição implícita.

Parâmetros de offloading de computação

Parâmetro

Escopo

Valor

Padrão

Descrição

materialized_view_complete_refresh_offload_policy

SESSION

Ver valores de política suportados

PREFER_IMCI

Especifica a política para offloading de computação de consulta.

pq_mpp_allow_imci_node

GLOBAL

ON/OFF

OFF

Permite agendar PQ workers em nó IMCI somente leitura (necessário para modo ePQ).

pq_mpp_allow_dispatch_to_imci_node

GLOBAL

ON/OFF

OFF

Permite uso do ponto de entrada de despacho IMCI. Este parâmetro deve estar ativado tanto no nó primário (RW) quanto no nó IMCI somente leitura alvo.

Parâmetros de compactação de rede

Parâmetro

Escopo

Valor

Padrão

Descrição

materialized_view_etl_compression_algorithm

SESSION

  • UNCOMPRESSED

  • ZSTD

UNCOMPRESSED

Especifica o algoritmo de compactação para o canal PQ interno. Esta configuração aplica-se apenas no modo de offloading ePQ MPP.

materialized_view_etl_compression_level

SESSION

0–22

0

Especifica o nível de compactação ZSTD para o canal PQ. Se definido como 0, usa-se o nível padrão ZSTD (3).

materialized_view_cache_etl_result

SESSION

ON/OFF

OFF

Especifica se deve armazenar em cache todo o conjunto de resultados na memória. Esta configuração é válida apenas no modo ETL.

Funcionamento da compactação:

Modo

Local de compactação

Condição efetiva

ePQ (offloading MPP)

Canal PQ interno entre o nó primário (RW) e nós remotos.

materialized_view_etl_compression_algorithm = ZSTD

ePQ (apenas local)

Sem transferência de rede.

Não aplicável.

O parâmetro materialized_view_etl_compression_level entra em vigor apenas quando materialized_view_etl_compression_algorithm = ZSTD. Se definido como 0, usa-se o nível padrão ZSTD de 3. Se definido com valor de 1 a 22, usa-se o nível especificado. Níveis mais altos proporcionam melhor taxa de compactação, mas aumentam a sobrecarga de CPU.

Política de offloading (parâmetro materialized_view_complete_refresh_offload_policy)

Valor

Descrição

MASTER

O nó primário (RW) executa todas as operações localmente.

PREFER_TPRO

Prioriza offloading para nó TPRO somente leitura. Reverte para o nó primário (RW) se indisponível.

PREFER_IMCI

Prioriza offloading para nó IMCI somente leitura. Reverte para o nó primário (RW) se indisponível.

FORCE_TPRO

Força offloading de computação para nó TPRO somente leitura. Se nenhum nó desse tipo estiver disponível, a operação falha.

FORCE_IMCI

Força offloading de computação para nó IMCI somente leitura. Se nenhum nó desse tipo estiver disponível, a operação falha.

COST

Usa modelo baseado em custo para selecionar automaticamente nó IMCI ou TPRO somente leitura para offloading.

Recomendações de seleção de modo

Cenário

Modo recomendado

Configuração chave

Tabela estreita sem nós remotos

ePQ apenas local

materialized_view_complete_refresh_offload_policy=MASTER

Tabela estreita com nós somente leitura indexados em column-store ou nós somente leitura row-store

ETL/ePQ com offloading MPP

materialized_view_complete_refresh_offload_policy=FORCE_IMCI

Tabela larga ou tabela com campos grandes

ETL

materialized_view_complete_refresh_offload_policy=FORCE_IMCI

Cluster multi-master (Limitless)

ETL

Use o modo ETL. O ePQ não está disponível para clusters multi-master.

Considerações

  • Sem efeito quando o grau de paralelismo é 1: Ambos os modos paralelos degradam para operação INSERT SELECT serial.

  • Disponibilidade de nó remoto: Tanto o modo ETL quanto o offloading ePQ MPP dependem de nós remotos. Se um nó remoto estiver indisponível, as políticas FORCE_* retornam erro, enquanto as políticas PREFER_* revertem para execução local no nó primário (RW).

  • Limitações de ambiente multi-master: Em cluster multi-master (Limitless), o modo ePQ é desativado automaticamente e reverte para execução serial. Use o modo ETL para atualização paralela.

  • Cobertura de colunas IMCI: Ao usar offloading ePQ MPP para nó somente leitura com índice colunar, o índice deve cobrir todas as colunas lidas pela consulta da materialized view. Caso contrário, o sistema retorna erro. O modo ETL não possui essa limitação.

  • Contagem de partições implícitas: Recomendamos definir este valor entre 0,5 e 2 vezes o grau de paralelismo. Poucas partições podem levar à contenção de gravação, enquanto muitas podem aumentar a sobrecarga de gerenciamento de arquivos.

  • Local de gravação: Em ambos os modos, as gravações de dados são sempre concluídas localmente no nó primário (RW). O offloading afeta apenas onde a consulta SELECT é executada.

  • Persistência de parâmetros: Configurações definidas com SET SESSION não persistem entre reinicializações do cluster, enquanto alterações em parâmetros GLOBAL feitas no console persistem.

  • Compromisso entre compactação e CPU: Para offloading ePQ MPP, recomendamos definir materialized_view_etl_compression_algorithm=ZSTD. Para tabelas estreitas, a sobrecarga de CPU da compactação pode anular os benefícios de rede.