Todos os produtos
Search
Central de documentação

PolarDB:Mesclagem e classificação DDL multivia

Última atualização: Jun 28, 2026

Crie um índice em uma tabela grande pode levar minutos ou mais, bloqueando operações DDL simultâneas durante esse período. A mesclagem e classificação DDL multivia substitui a classificação por mesclagem externa bidirecional padrão por uma classificação N-vias. Isso reduz os ciclos de leitura e gravação de arquivos intermediários e diminui o tempo total de criação do índice.

Pré-requisitos

Antes de começar, verifique se o cluster PolarDB atende a um dos seguintes requisitos de versão:

  • PolarDB for MySQL 8.0.2 com versão de revisão 8.0.2.2.5 ou posterior

  • PolarDB for MySQL 8.0.1 com versão de revisão 8.0.1.1.28 ou posterior

  • PolarDB for MySQL 5.7 com versão de revisão 5.7.1.0.23 ou posterior

Para verificar a versão do cluster, consulte Consultar a versão do mecanismo.

Como funciona

A criação de índices no InnoDB ocorre em três fases:

  1. Varredura: O sistema varre o índice clusterizado e grava as entradas de classificação no buffer de classificação. Quando o buffer enche, as entradas são descarregadas em um arquivo intermediário temporário como uma execução classificada.

  2. Classificação por mesclagem: Após a gravação de todas as execuções, o InnoDB as mescla. A classificação bidirecional padrão mescla duas execuções por vez, o que exige múltiplas passagens pelo arquivo intermediário. Já a mesclagem N-vias combina mais execuções por passagem, reduzindo o total de passagens e a E/S intermediária.

  3. Inserção na árvore B: As entradas totalmente classificadas são inseridas no índice de árvore B.

Aumentar o número de vias reduz as passagens pelo arquivo intermediário, mas consome memória adicional: cada via extra requer um buffer de classificação adicional de innodb_sort_buffer_size bytes.

Limitações

  • Não há suporte para índices de texto completo e espaciais.

  • O uso de memória escala proporcionalmente ao número de vias. Ative a mesclagem N-vias aumenta a memória ocupada pelo cluster em (N+1) × innodb_sort_buffer_size bytes.

Configure mesclagem multivia

Defina innodb_polar_parallel_merge_ways no nível da sessão antes de execute a instrução DDL.

Parâmetro

Escopo

Valores válidos

Padrão

Descrição

innodb_polar_parallel_merge_ways

Sessão

2–16

2

Número de vias para mesclagem e classificação. O valor padrão 2 utiliza a mesclagem bidirecional padrão. Defina um valor maior que 2 para ative a mesclagem multivia.

Essa configuração aplica-se apenas à sessão atual e reverte para o padrão após o término da sessão.

Exemplo: Ative a mesclagem de oito vias e crie um índice em uma tabela grande.

SET innodb_polar_parallel_merge_ways = 8;
ALTER TABLE table_1 ADD INDEX name_index (seller_name);

Teste de desempenho

O teste a seguir compara a mesclagem bidirecional com a de oito vias em uma tabela de 100 milhões de linhas para demonstrar o impacto do aumento no número de vias.

Ambiente de teste

Item

Especificação

Cluster

PolarDB for MySQL 8.0

CPU

8 núcleos

Memória

32 GB

Capacidade de armazenamento

50 TB

Esquema

CREATE TABLE `table_1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `seller_id` bigint(20) DEFAULT NULL,
  `seller_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  `gmt_create` varchar(30) DEFAULT NULL,
  `update_time` varchar(30) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB;

Dados de teste: 100.000.000 de linhas geradas pelo seguinte procedimento armazenado.

delimiter ||
CREATE PROCEDURE populate_0(IN NUM INT)
BEGIN
  DECLARE sid INT;
  DECLARE suffix_name INT;
  DECLARE i INT;
  SET sid=1000;
  SET suffix_name=10;
  SET i=1;
  START TRANSACTION;
  WHILE i <= NUM
  DO
    INSERT INTO table_1(seller_id, seller_name, gmt_create, update_time)
      VALUES(sid, CONCAT('sellername', suffix_name), NOW(), NOW());
    SET suffix_name=suffix_name+1;
    SET sid=sid+1;
    SET i=i+1;
  END WHILE;
  COMMIT;
END ||
delimiter ;
CALL populate_0(100000000);

Operação de teste: ALTER TABLE table_1 ADD INDEX name_index (seller_name);

Resultados

Configuração

Tempo (segundos)

Mesclagem e classificação de oito vias

353

Mesclagem e classificação bidirecional

485

Neste conjunto de dados e configuração de hardware, a mesclagem de oito vias reduziu o tempo de criação do índice em aproximadamente 27% em comparação à mesclagem bidirecional.

Fale conosco

Em caso de dúvidas sobre operações DDL, entre em contato com o suporte técnico.

Tópicos relacionados