Todos os produtos
Search
Central de documentação

PolarDB:Otimização de desempenho de E/S para DDL

Última atualização: Jun 28, 2026

Este tópico descreve a otimização do desempenho de E/S em instruções DDL.

PolarDB utiliza arquitetura com computação e armazenamento desacoplados. Os nós de computação acessam o armazenamento distribuído por meio de RDMA de alto desempenho. No entanto, a latência no acesso ao armazenamento distribuído ainda é significativamente maior que no acesso a discos locais. Operações DDL em tabelas grandes geram grande volume de operações de E/S; portanto, essa latência afeta diretamente o desempenho das instruções DDL. Para reduzir a latência de E/S, o PolarDB oferece os seguintes recursos:

Teste de desempenho

  • Ambiente de teste

    • Cluster do PolarDB for MySQL 8.0 com 8 núcleos de CPU e 32 GB de memória.

    • Capacidade de armazenamento do cluster: 50 TB.

  • Schema

    Execute a seguinte instrução para criar uma tabela chamada table_1:

    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

    Execute a instrução a seguir para gerar dados de teste:

    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

    Após popular a tabela com dados, compare a eficiência da execução de DDL executando a instrução ALTER TABLE table_1 ADD INDEX name_index (seller_name);:

    Leitura antecipada de DDL, E/S assíncrona de DDL e mesclagem e ordenação multivias de DDL

    Tempo consumido (segundos)

    Leitura antecipada de DDL, E/S assíncrona de DDL e mesclagem e ordenação multivias de DDL ativados:

    • loose_innodb_polar_ddl_build_index_readahead=ON

    • loose_innodb_polar_ddl_build_index_readahead_page_num=256

    • innodb_polar_ddl_async_io=ON

    • innodb_polar_parallel_merge_ways=8

    252

    Leitura antecipada de DDL, E/S assíncrona de DDL e mesclagem e ordenação multivias de DDL desativados:

    • loose_innodb_polar_ddl_build_index_readahead=OFF

    • loose_innodb_polar_ddl_build_index_readahead_page_num=64

    • innodb_polar_ddl_async_io=OFF

    • innodb_polar_parallel_merge_ways=2

    485