Todos os produtos
Search
Central de documentação

PolarDB:DDL read-ahead

Última atualização: Jun 28, 2026

O DDL read-ahead acelera operações DDL em tabelas grandes ao pré-carregar páginas de dados antes que a varredura de criação de índice as alcance, o que reduz o tempo de espera de I/O durante a operação.

Ao executar uma instrução ALTER TABLE em uma tabela grande, o InnoDB lê cada página de dados sequencialmente para recriar índices ou reestruturar linhas. O DDL read-ahead antecipa o carregamento dessas páginas para garantir sua disponibilidade imediata quando necessárias.

Pré-requisitos

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

  • PolarDB for MySQL 8.0, versão de revisão 8.0.1.1.28 ou posterior

  • PolarDB for MySQL 5.7, versão de revisão 5.7.1.0.22 ou posterior

  • PolarDB for MySQL 5.6, versão de revisão 5.6.1.0.34 ou posterior

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

Impacto no I/O e agendamento

O DDL read-ahead dedica threads adicionais ao pré-carregamento de páginas, aumentando o consumo de I/O enquanto a operação DDL estiver em andamento. Essa carga extra pode afetar cargas de trabalho SQL concorrentes. Execute o DDL read-ahead fora dos horários de pico para minimizar o impacto no tráfego de produção.

Parâmetros

Use os dois parâmetros globais a seguir para ativar o DDL read-ahead e ajustar seu volume de pré-carregamento.

loose_innodb_polar_ddl_build_index_readahead

Parâmetro

Nível

Padrão

Valores válidos

Descrição

loose_innodb_polar_ddl_build_index_readahead

Global

OFF

ON, OFF

Ativa ou desativa o DDL read-ahead.

loose_innodb_polar_ddl_build_index_readahead_page_num

Parâmetro

Nível

Padrão

Valores válidos

Descrição

loose_innodb_polar_ddl_build_index_readahead_page_num

Global

64

32–256

Número de páginas a pré-carregar por solicitação de read-ahead. Cada página tem 16 KB. Valores maiores pré-carregam mais dados por solicitação, beneficiando varreduras sequenciais grandes, mas consomem mais largura de banda de I/O.

Comece com o padrão de 64 páginas (1 MB por pré-carregamento). Aumente até 256 páginas (4 MB por pré-carregamento) para tabelas muito grandes, nas quais a varredura DDL seja o principal consumidor de I/O e o cluster disponha de capacidade ociosa de I/O.

Teste de desempenho

O benchmark a seguir compara o tempo de execução de DDL com e sem o read-ahead ativado.

Ambiente de teste

  • PolarDB for MySQL 8.0, 8 núcleos de CPU, 32 GB de memória

  • Capacidade de armazenamento: 50 TB

Schema

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

Insira 100.000.000 de linhas usando o seguinte stored procedure:

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);

Reinicie os processos do PolarDB antes de executar cada teste para limpar o cache do buffer pool. Isso garante que os resultados reflitam o desempenho de I/O de disco, e não dados em cache.

Resultados

Todos os testes usam loose_innodb_polar_ddl_build_index_readahead_page_num=256 quando o read-ahead está ativado.

ALTER TABLE table_1 ADD INDEX name_index (seller_name):

DDL read-ahead

Tempo (segundos)

Desativado

485

Ativado

412

ALTER TABLE table_1 ADD COLUMN c1 varchar(100) after id:

DDL read-ahead

Tempo (segundos)

Desativado

264

Ativado

159

Fale conosco

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

Próximos passos