Todos os produtos
Search
Central de documentação

PolarDB:E/S assíncrona para DDL

Última atualização: Jun 28, 2026

O PolarDB oferece o recurso de E/S assíncrona para DDL. A criação de índices em tabelas grandes por meio de instruções DDL costuma ser demorada. Use a E/S assíncrona para DDL para reduzir significativamente o tempo necessário para criar esses índices.

Pré-requisitos

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

  • PolarDB for MySQL 8.0.2, versão de revisão 8.0.2.2.6 ou posterior

  • PolarDB for MySQL 8.0.1, versão de revisão 8.0.1.1.29 ou posterior

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

Limitações

A E/S assíncrona para DDL não se aplica a:

  • Índices de texto completo

  • Índices espaciais

Ative E/S assíncrona para DDL

Defina o parâmetro innodb_polar_ddl_async_io como ON nas configurações de parâmetros do cluster. Para obter instruções, consulte Configure parâmetros de cluster e nó.

Parâmetro

Nível

Padrão

Valores válidos

Descrição

innodb_polar_ddl_async_io

Global

OFF

ON, OFF

Ativa ou desativa a E/S assíncrona para DDL

Teste de desempenho

O teste a seguir mede o impacto da E/S assíncrona para DDL na criação de índices em tabelas grandes.

Ambiente de teste

  • PolarDB for MySQL 8.0, 8 núcleos de CPU, 32 GB de memória, capacidade de armazenamento de 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

O procedimento armazenado a seguir insere 100.000.000 linhas na table_1:

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

Método e resultados do teste

Execute a instrução a seguir com a E/S assíncrona para DDL ativada e, em seguida, desativada. Compare o tempo de execução:

ALTER TABLE table_1 ADD INDEX name_index (seller_name);

E/S assíncrona para DDL

Tempo (segundos)

Ativada

368

Desativada

485

Neste teste, a ativação da E/S assíncrona para DDL reduziu o tempo de criação de índice em aproximadamente 24%.

Fale conosco

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

Próximos passos